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

相关推荐
linweidong3 小时前
C++ 模块化编程(Modules)在大规模系统中的实践难点?
linux·前端·c++
invicinble7 小时前
对linux形成认识
linux·运维·服务器
小Pawn爷7 小时前
14.VMmare安装ubuntu
linux·运维·ubuntu
技术路上的探险家7 小时前
8 卡 V100 服务器:基于 vLLM 的 Qwen 大模型高效部署实战
运维·服务器·语言模型
有谁看见我的剑了?7 小时前
介绍一款 测试 DNS解析成功率的网站
运维
半桔7 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
绵绵细雨中的乡音8 小时前
深入理解 ET 与 LT 模式及其在 Reactor 模型中的应用
服务器·网络·php
HABuo8 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
Howrun7778 小时前
关于Linux服务器的协作问题
linux·运维·服务器
小白同学_C9 小时前
Lab3-page tables && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os