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 分钟前
29、构建可视化日志管理服务器
运维·服务器
---学无止境---5 分钟前
Linux性能分析系统和虚拟文件系统缓存初始化
linux
小王C语言5 分钟前
封装红黑树实现mymap和myset
linux·服务器·算法
獭.獭.13 分钟前
Linux -- 线程概念
linux·线程·进程·多级页表·缺页异常
望获linux15 分钟前
【实时Linux实战系列】使用 u-trace 或 a-trace 进行用户态应用剖析
java·linux·前端·网络·数据库·elasticsearch·操作系统
对岸住着星星18 分钟前
断电重启后自动重连WiFi并分配固定IP的Armbian脚本
服务器·网络·tcp/ip
dessler20 分钟前
Elasticsearch(ES)-Logstash
linux·运维·elasticsearch
lht63193561227 分钟前
Ubuntu Server系统安装谷歌浏览器
linux·运维·ubuntu
hkNaruto41 分钟前
【DevOps】基于Nexus部署内网ubuntu 2204系统APT代理镜像仓库操作手册
运维·ubuntu·devops
JanelSirry1 小时前
DevOps是什么,有什么作用,一般用来干嘛
linux·运维·devops