首先:我已启用核心转储,并且它们大多数时候都能正常工作。
因此,一个程序偶尔会崩溃并生成核心转储。但有时它崩溃时不会生成核心转储。这非常令人沮丧。
是否存在严重到不会导致核心转储的崩溃?
答案1
崩溃时不产生核心转储的原因有几个,我猜其中第一个原因不适用于您:
1)ulimit 有不是已设置为无限:你应该发出
ulimit -c unlimited
2) 剩余磁盘空间不足,或者您无权写入发出崩溃命令的目录,或者您可能正在覆盖现有文件;
3) 该程序需要一些 setxid 程序,在这种情况下,出于安全考虑,不会转储数据。转储可能包含一些机密数据,这些数据可能会被未经授权的用户获取。为了避免这种情况,请以 sudo 身份发出
echo 2 >/proc/sys/fs/suid_dumpable
请注意这面不寻常的旗帜,2:1方法放弃所有安全性以允许调试整个系统。2受到更多限制。
如果您有权访问代码,您可以尝试启用设置限制在代码中,或者调用prctl (PR_SET_DUMPABLE,1)。