【发布时间】:2013-05-12 17:10:00
【问题描述】:
在我的项目中,我添加了一个新模块,现在我的进程被信号 11 终止。 我想跟踪和了解问题,但 freebsd 没有生成 coredump 文件。 我将 sysctl 设置为:
sysctl -a | grep core
kern.corefile: /usr/core
kern.nodump_coredump: 1
kern.coredump: 1
kern.sugid_coredump: 1
debug.elf64_legacy_coredump: 1
debug.elf32_legacy_coredump: 1
我也设置了 ulimit -c unlimited
我从我的代码中删除了所有关于信号的代码,例如“sigaction(SIGTERM, &signal, &signal_old);” 为了不阻止内核生成核心转储。
为什么我仍然看不到任何核心转储?我错过了什么?
还有什么方法可以强制在 freebsd 上运行的程序创建与 linux 中的 do_coredump() 等效的 coredump?
【问题讨论】:
-
通常要强制进行核心转储,您会调用 raise(signum),其中 signum 是一个信号,该信号会产生带有核心转储(中止、seg 等)的退出。
标签: c operating-system freebsd coredump