coredump文件的使用
coredump文件在调试程序时,能够快速将堆栈恢复到程序崩溃时的状态,对于代码调试很有帮助,尤其是对于哪些难以复现的bug。
在默认情况下,是不生成coredump文件的。
可以通过命令ulimit -c
查看当前系统允许生成coredump文件的大小。默认情况下,返回0
,表示不允许生成coredump文件。
通过命令ulimit -c unlimited
设置对coredump文件的大小不设限制。需要注意的是,执行这条命令并不会永久保存这个设置,需要将该命令写入.bashrc
文件中,否则,仅在当前shell中生效。
在默认情况下,生成的coredump文件在/var/lib/systemd/coredump/
目录中,文件名的设定规则按照文件/proc/sys/kernel/core_pattern
中的内容设置。生成的coredump文件是压缩过的格式,属于zst文件。
默认设置兼顾了coredump文件的大小,还能通过coredumpctl命令进行查看和调试,所以这里就采用默认配置。
coredumpctl的常用命令:
# 查看当前coredump文件列表 coredumpctl list # 查看对应程序的coredump文件列表 coredumpctl list <executable> # 调试程序,仅匹配最新的那个 coredumpctl debug <executable> <path to executable> # 导出coredump文件 coredumpctl -o <coredump file name> dump <executable>
需要注意的是,实际可执行文件为release模式下生成的coredump文件,是得不到太多可用信息的,可以在gdb中指定可执行文件路径,这个可执行文件可以携带调试信息,使用-g编译,但需要保证代码和release版本一致,那么这个coredump和可执行文件就是匹配的,可以在调试时获取到上下文信息
可以通过命令coredumpctl debug <executable> <path to executable>
指定带上下文信息的可执行文件,也可以使用命令coredumpctl debug <executable>
对coredump进行查看,然后通过命令file <path to executable>
加载带上下文信息的可执行文件。
还可以通过dump导出coredump文件,然后使用gdb调试。
本文来自博客园,作者:EricLing0529,转载请注明原文链接:https://www.cnblogs.com/ericling0529/p/18108114
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?