【发布时间】:2014-06-26 12:27:31
【问题描述】:
我正在尝试在用 C 编写的 linux-daemon 中查找错误。该守护程序应该在无限循环中运行以响应请求。偶尔它会无缘无故地停止。没有创建核心转储。没有内核段错误消息写入 /var/log/messages
我们已经知道进程的死亡是由某些请求引起的,但我在源中找不到错误发生的位置。
这是我到目前为止所做的:
- 用 -g -Wall 重新编译,用 ulimit -c unlimited 开始
- 用 -ABRT 杀死,这将创建一个核心转储,因此权限必须正常
- 添加了 char *p=NULL, c=*p;代码的某个地方。这将创建一个 coredump 和一个 kern.info 段错误系统日志消息。 gdb a.out core 显示了完美的回溯
这一切都让我相信,问题不是由错误的指针引起的。每个 exit() 语句之前都有 syslog() 语句,因此它不是自行停止的进程。并且该系统上没有可能终止该进程的用户。
如果没有核心转储,还有什么可能会杀死 unix 进程???
彼得
【问题讨论】:
标签: c unix segmentation-fault coredump kill-process