GDB调试Core文件

关于Core文件

Linux程序在运行过程中可能会出现奔溃的现象,此时启用Core文件可以记录程序的奔溃现场,方便事后查找问题。


准备工作

  • 启用core文件
    默认情况下的core文件是不启用的,即程序奔溃不会生成奔溃core文件,所以需要开启这个功能
  • 查看core文件状态
    ulimit -a
    如果core file size行为0,那么表示没有启用core文件,需要执行
    ulimit -c 2048
    重置core文件大小的上限,可以自定义文件大小上限值。
  • 设定core文件名和保存地址
    sudo echo "./core.%p" > /proc/sys/kernel /core_pattern
    上述命令表示在当前目录生成奔溃文件,文件带了进程ID。还有其他可选的参数:
    %p - insert pid into filename
    %u - insert current uid into filename 
    %g - insert current gid into filename
    %s - insert signal that caused the coredump into the filename
    %t - insert UNIX time that the coredump occurred into filename
    %h - insert hostname where the coredump happened into filename
    %e - insert coredumping executable name into filename

使用core文件

按照之前的设置,当程序奔溃后,会在程序所在目录生成core文件。此时我们就可以使用gdb打开core文件

gdb 程序名 core文件
一般情况下,程序会直接定位到程序出错的位置,如果没有,可以使用where命定来定位。

需要注意,程序编译时要加上参数选项-g,使得由足够多的调试信息。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。