一.概念介绍
有时候我们在使用Linux进行编程的时候都是使用GDB进行调错,但是如果程序已经在运行过程中的时候呢?这个时候我们就需要查看coredump日志来判断是哪里出问题了,直接通过coredump导出一个错误日志,直接观察日志判断错误.
二.coredump的配置
(1)首先创建文件 /data/coredump
然后 执行这条指令 指定生成的路径
%e代表文件名 %p代表进程号
echo /data/coredump/core.%e.%p>/proc/sys/kernel/core_pattern
这个时候我们cat 看一下
说明指定成功了..
(2)然后改变一下coredump目录的权限
chmod 666 coredump/
(3)接着执行,让文件的core file size变成unlimited
ulimit -c unlimited
如图:
到此配置工作大功告成! 注意如果这个没有设置为unlimited的话,文件是无法写入的 注意一定要打开,且这个设置只是对应单独窗口的 若想要永久打开此选项(如果你生成不了coredump文件 八成是因为没打开这个东西)
vim ~/.bashrc
在最下面加一行
ulimit -c unlimited
三.coredump的使用
我们故意生成一个段错误的程序
访问了空指针肯定会报段错误 接着coredump文件会生成到你指定的/data/coredump文件夹下
#include <stdio.h>
int func(int *p){
int y=*p;
return y;
}
int main(){
int *p=NULL;
return func(p);
}
接着使用gdb打开 注意编译的时候要加 -g 选项 不然无法用gdb打开
(1)打开程序生成coredump
(2)查看coredump文件夹
(3)运行coredump文件
gdb test.exe /data/coredump/core.test.exe.3196
已经找到了是这个错误在文件的第五行
使用bt可以查看栈信息 使用f n查看第n层的信息 这里栈里一共有两层f 0 和 f1
到此就是使用coredump的注意事项和方法.
创作不易希望一键三连~