core dump查看

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进行线程跳转
  • 比如print查看变量

版权声明:本文为Wendell_0原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。