core dump查看
@(论文笔记本)
core dump
表示当程序异常终止或崩溃时,将进程此时的内存中的内容拷贝到磁盘文件中存储,以方便编程人员调试。
##1、应用场景
程序报错:Segmentation fault (core dump)
##2、使用core dump
- 打开core dump
ulimit -c unlimited
这条命令是在当前的终端环境开启core dump功能,并且不限制core dump文件的大小。如果需要永久生效,就得去修改
/etc/security/limits.conf
;如果要限制core dump文件的大小,将unlimits换成期望的大小即可(单位为KB)。
- 使用gdb调试core文件
- 启动gdb调试
gdb demo core
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMsj4wxo-1635907074410)(./问题出现位置.png)]
可见导致进程终止的信号是
SIGSEGV
,出现这个信号的是线程1。
函数调用栈为0x000056342394d49e
,为yc::Malloc(int len)
函数,其参数len
的数值为631609952。具体位置是homework.cpp文件的第58行。即当前所执行到的行数。
- 之后可以通过gdb的各个命令进行调试。
- 比如
l
查看第58行的代码- 比如
thread id
进行线程跳转- 比如