在我的项目中,我添加了一个新模块,现在我的进程被信号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);”
不阻止内核生成coredump。
为什么我仍然看不到任何堆芯?我错过了什么?
还有什么方法可以强制在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/

10-11 16:09