【发布时间】:2021-12-09 07:57:31
【问题描述】:
在 macOS 中,我发现 SIGABRT 在某些情况下不会生成核心转储。
例如,我在一个终端运行睡眠:
lianxin.wlx@mbp [01:08:21] [~/test]
-> % sleep 1000
并在另一个终端向它发送 SIGABRT:
lianxin.wlx@mbp [01:08:59] [~]
-> % ps -ef | grep sleep
502 47679 20388 0 1:08AM ttys001 0:00.01 sleep 1000
lianxin.wlx@mbp [01:09:03] [~]
-> % kill -6 47679
然后睡眠进程被中止,但没有生成核心转储。
lianxin.wlx@mbp [01:08:21] [~/test]
-> % sleep 1000
[1] 47679 abort sleep 1000
lianxin.wlx@mbp [01:10:35] [~/test]
-> % ls /cores
lianxin.wlx@mbp [01:10:37] [~/test]
-> %
那为什么?我在 Linux 中测试了相同的操作,它确实生成了核心转储。
我确定我已经正确打开了核心转储(ulimit -c unlimited,而/cores 的权限是 777)。我写了一个程序,它会在 SIGSEGV 中崩溃,它确实在 /cores 中生成了一个核心转储。
【问题讨论】:
标签: c++ linux macos operating-system coredump