在我的项目中,我添加了一个新模块,现在我的进程被信号 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 上运行的程序创建 coredump,相当于 linux 中的 do_coredump()?
最佳答案
问题出在:
kern.corefile:/usr/core
类似下面的内容应该有所帮助:
sysctl -w kern.corefile = "%N.core"
关于c - 强制程序在 freebsd 上创建 coredump,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16610626/