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调试容易定位问题。

相关推荐
小玉不愚鸭4 分钟前
nginx中的https的搭建
运维·nginx·https
郝学胜-神的一滴7 分钟前
Linux信号屏蔽字详解:原理、应用与实践
linux·服务器·开发语言·c++·程序人生
weixin_307779139 分钟前
Jenkins ASM API 插件:详解与应用指南
java·运维·开发语言·后端·jenkins
是垚不是土12 分钟前
轻量化CICD落地:基于Jenkins与Supervisor的中小企业服务发布实践
运维·servlet·ci/cd·微服务·jenkins
温启志c#18 分钟前
【无标题极简版的 TCP 服务端和客户端实现,保留核心功能,去掉复杂封装,适合快速测试:】
运维·服务器·网络
神秘奇男子20 分钟前
openEuler 25.09 企业级 MySQL主从复制部署与性能优化实战提升50%
linux·mysql
北京耐用通信31 分钟前
三步打通数据壁垒:耐达讯自动化Ethernet/IP转CC-Link方案全解析。建议点赞收藏
运维·tcp/ip·自动化
羊村积极分子懒羊羊33 分钟前
nginx的https的搭建
运维·nginx·https
moringlightyn41 分钟前
进程控制(程序替换+自定义Shell)
linux·服务器·c++·笔记·c·shell·进程
像风一样自由20201 小时前
Docker 与 Docker Compose:从零开始的容器化之旅
运维·docker·容器