您的位置:首页 > 科技 > 能源 > GDB调试——用gdb查看coredump

GDB调试——用gdb查看coredump

2024/12/23 13:21:49 来源:https://blog.csdn.net/qq_45864756/article/details/142132731  浏览:    关键词:GDB调试——用gdb查看coredump

一、coredump是什么

        我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。

        通常情况下,core文件包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,可理解为是程序工作当前状态存储生成的第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题并进行及时解决。

1.1 coredump的存储位置

         core文件默认的存储位置与对应的可执行程序在同一目录下,文件名是core,查看core文件的存在位置:   cat  /proc/sys/kernel/core_pattern。   缺省值是core

1.2产生coredump的一些条件

  1.  需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需进行修改设置。
  2. 以产生coredump且不受大小限制:ulimit  -c unlimited  
  3. 指定字符大小:ulimit –c [size]

1.3Linux 下的core dump的配置与调试

(1)命令行输入查看信息

  • cat /proc/sys/kernel/core_uses_pid
  • cat /proc/sys/kernel/core_pattern

       1)/proc/sys/kernel/core_uses_pid可控制core文件的文件名中是否添加pid作为扩展。1:添加pid作为扩展名,生成的core文件格式为core.xxxx;0:生成的core文件同一命名为core。

       2)/proc/sys/kernel/core_pattern控制core文件保存位置和文件名格式。生成的coredump保存在/odsp/help/coredump/core-%e-%p       产生的文件名为core-命令名(%e)-pid(%p)

(2)查看是否有coredump信息

  • ll /odsp/help/coredump/

(3)对coredump文件解压缩

  • tar zxf 文件名

(4)用gdb查看coredump文件

  •  gdb 【exec file】 【core file】
  • /odsp/webservice/axis/bin/axis2_http_server这个exec file来查看
  • gdb /odsp/webservice/axis/bin/axis2_http_server  core-axis2_http_serv-22349

        如:解压后的coredump文件名为       core-axis2_http_serv-22349       core-axis2_http_serv-25561       在前面已经介绍了coredump的命名规则:core-%e-%p        axis2_http_serv为命令名    22349为pid        其中%e决定着用什么样的exec file来查看 core file        axis2_http_serv说明这个是webservice引起的coredump,那么就用        /odsp/webservice/axis/bin/axis2_http_server这个exec file来查看

1.4prv_task_dmn相关的coredump文件查看

gdb /odsp/bin/replica_task_dmn  core-prv_task_dmn-22349

1.5 gdb的一些常用操作

gdb调试命令

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com