core文件设置
core 文件设置
常规core文件设置
core 文件大小
查看:ulimit -c 临时设置: ulimit -c unlimited (当前终端有效)
修改core文件路径
临时修改(重启后失效) 修改
/proc/sys/kernel/core_pattern
1
echo '/corefile/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern
永久生效 修改
/etc/sysctl.conf
, 在其中加入两行1
2kernel.core_pattern=/corefile/core_%e.%p
kernel.core_uses_pid=0
kernel.core_uses_pid 表示在core 文件结尾不加
pid,因为已经有了%p,所以不需要再添加
执行sudo sysctl -p /etc/sysctl.conf
, 使修改生效。
apport core 文件
在 /proc/sys/kernel/core_pattern 文件中写入 1
|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E
注: Apport 并不直接用于分析 core 文件。它主要用于收集和报告应用程序崩溃信息,并将其提交给开发人员或错误报告系统。 使用 Apport 收集 core 文件有以下优点:
自动收集和报告:Apport 可以自动捕获应用程序的崩溃信息,并生成相应的崩溃报告。这样,你无需手动分析 core 文件,而是可以直接获得一个包含崩溃信息的报告。
附带环境信息:Apport 的崩溃报告通常会包含应用程序崩溃时的环境信息,如操作系统版本、软件包版本、硬件信息等。这些信息对于开发人员来说是非常有用的,可以帮助他们更好地理解和重现崩溃问题。
易于提交和跟踪:Apport 默认会将崩溃报告上传到错误报告系统(如 Launchpad),使开发人员能够轻松地接收和跟踪报告。这样,开发人员可以更快地了解和解决崩溃问题。
用户友好:Apport 的崩溃报告通常以用户友好的方式呈现,包含易于理解的错误消息、堆栈跟踪和其他相关信息。这使得用户能够更好地理解崩溃问题,并提供有用的反馈。
调试代码
1 |
|
gdb加载core文件
gdb app corefile
不需要加 app 的 args
dmesg 查看内核日志
情景回顾:程序启动后直接被kill掉,没有core dump 等报错信息,通过dmesg 查看内核日志发现是由于 OOM 被系统直接杀掉了。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!