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

相关推荐
历程里程碑9 小时前
Protobuf 环境搭建:Windows 与 Linux 系统安装教程
linux·运维·数据结构·windows·线性代数·算法·矩阵
软件资深者10 小时前
OpenClaw 本地安装 vs 网页版龙虾:全方位对比 + 2026 最新一键安装客户端(新手零门槛搭建专属 AI 助理)
运维·人工智能·自动化·飞书·数字员工·openclaw·龙虾
XXOOXRT10 小时前
Ubuntu搭建Java项目运行环境(JDK17+MySQL8.0)超详细教程
java·linux·mysql·ubuntu
吴声子夜歌10 小时前
TypeScript——类型基础(二)
linux·ubuntu·typescript
vvw&10 小时前
如何从 Ubuntu 24.04 升级到 Ubuntu 25.04
linux·运维·服务器·ubuntu
CDN36010 小时前
CSDN 交流|360CDN 系列产品使用感受与避坑建议
运维·网络安全
CDN36010 小时前
源站防护升级:360CDN 高防服务器部署与优化
运维·服务器
qzhqbb10 小时前
Web 服务器(Nginx、Apache)
服务器·前端·nginx
Bruce204899810 小时前
OpenClaw 5大高频自动化场景落地(附代码/配置)
运维·自动化
暴力求解10 小时前
Linux---进程池
linux·运维·服务器