dsk*_*and 2 c++ apport segmentation-fault gdb
嗨,我目前正在 Ubuntu 上编程 c++,但无法生成带有分段错误的核心转储。我只是得到“分段错误”而不是我设置的(核心转储) ulimit -c 无限制。
我曾经能够生成核心转储,但前一段时间他们停止了。也许这是因为我因为这个错误而禁用了 apport “对不起,Ubuntu 12.04 遇到了内部错误。” .
所以我想知道在 ulimit -c unlimited 之后还有哪些其他步骤可以启用核心转储?
必须在内核中启用 Coredumps
/proc/sys/kernel/core_pattern
Run Code Online (Sandbox Code Playgroud)
可以通过设置
sysctl kernel.core_pattern=$coredump_name
Run Code Online (Sandbox Code Playgroud)
例如
sysctl kernel.core_pattern=core
sysctl kernel.core_pattern=/var/crash/%E.%p.%t.%s
Run Code Online (Sandbox Code Playgroud)
%E给出崩溃程序的完整路径名(/替换为!)%p 给出崩溃程序的进程 ID%t 给出纪元时间戳%s 给出终止信号编号完整的细节在man 5 core.
内核的默认值是core,但它可以在引导时设置为其他(或禁用),使用/etc/sysctl.conf或/etc/sysctl.d/*.conf或类似的。如果您有后者,那么只需添加一个名称在其他文件之后排序的新文件(可能以 开头z);如果没有,则编辑现有文件。在该文件中将参数放在sysctl上面的命令中,例如
kernel.core_pattern=core
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |