您的位置:首页 > 科技 > 能源 > linux中使用gdb调试c++的dump文件

linux中使用gdb调试c++的dump文件

2024/10/6 0:16:00 来源:https://blog.csdn.net/m0_72363694/article/details/139282309  浏览:    关键词:linux中使用gdb调试c++的dump文件

1 查看系统是否开启dump生成 0表示没开启

ulimit -c   

但是这个只是针对当前这个连接,如果想要永久修改可以修改配置文件:
vim /etc/profile,然后添加上面的命令ulimit - c unlimited.然后执行source /etc/profile或者重启使刚刚的配置可以生效。

2查看dump生成的文件位置

cat /proc/sys/kernel/core_pattern

3 将dump文件和可执行文件放在一起

gdb -c ./core.dead_lock  ./dead_lock

4进入gdb 

bt 查看调用栈信息:info threads 当前有多少个线程 ; thread  2 切换到线程2上

这时我们进入线程2 thread 2 然后执行 bt查看调用栈 再使用f num 查看调用栈 使用p mtx1查看锁信息或者p *this

上面owner=30741表示这个锁被谁占用,0表示没有被线程抢占可以使用info threads查看所有线程id然后对比这个锁被哪个线程持有。

锁就是系统的标志量,只有一个线程可以占用锁资源并把锁的owen设置成线程的id。

使用gdb调试容易定位问题。

版权声明:

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

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