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

相关推荐
初学者_xuan2 小时前
Linux程序与进程和进程程序基础以及程序管理(零基础掌握版)
运维·计算机网络·网络安全·零基础·学习方法·linux程序管理
小白银子2 小时前
零基础从头教学Linux(Day 20)
linux·运维·服务器·php·国安工程师
天上掉下来个程小白2 小时前
微服务-27.配置管理-什么是配置管理
运维·微服务·架构
古月-一个C++方向的小白3 小时前
Linux初始——基础指令篇
linux·运维·服务器
信工 18023 小时前
中断下文---linux驱动开发
linux·驱动开发
古月-一个C++方向的小白3 小时前
初始Linux——指令与权限
linux·运维·服务器
柳鲲鹏5 小时前
未成功:使用 Nginx 搭建代理服务器(正向代理 HTTPS 网站)
运维·nginx
wuyang-ligerj5 小时前
路由基础(二):路由表和FIB表
运维·网络·网络协议·智能路由器
adyp5 小时前
Superset docker、ubuntu、windows安装方式
运维
来根烟了寂寞6 小时前
瑞芯微rv1106交叉编译openssl 1.x
linux·嵌入式