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