linux如何记录当前进程状态(类似core文件)

cpaal 2011-06-20 04:46:45
1 我在系统捕捉到异常后注册了回调,系统不异常退出,因此没有生成core文件。 如何在这个时候记录下全部信息(类似core)生成一个文件。
2 不方便使用GDB去break函数,能不能在代码中发现运行到一个地方的时候生成一个类似core的文件 ,记录信息,但是系统还继续运行。

我比较菜鸟 希望高手回答。
...全文
127 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvyinghong 2011-06-21
  • 打赏
  • 举报
回复
我google了一下,

http://stackoverflow.com/questions/131439/how-can-a-c-program-produce-a-core-dump-of-itself-without-terminating

void create_dump(void)
{
if(!fork()) {
// Crash the app in your favorite way here
abort() || (*((void*)0) = 42);
}
}

先fork一个子进程,然后再让子进程crash dump


http://forums.freebsd.org/archive/index.php/t-8268.html
char cmd[50];
sprintf(cmd, "gcore %u", getpid());
system(cmd);

调用那个gcore脚本来生成core file 。 gcore其实调用的gdb attach了你的进程生成 core file之后再detach的。


如果你是多进程的应用,可能会有些小的副作用吧。
louyong0571 2011-06-21
  • 打赏
  • 举报
回复
参考abort看看

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧