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

相关推荐
powerfulzyh8 分钟前
Ubuntu24.04远程开机
linux·ubuntu·远程工作
ulimpid8 分钟前
Command | Ubuntu 个别实用命令记录(新建用户、查看网速等)
linux·ubuntu·command
HHoao9 分钟前
Ubuntu启动后第一次需要很久才能启动GTK应用问题
linux·运维·ubuntu
小灰兔的小白兔10 分钟前
【Ubuntu】Ubuntu常用命令
linux·运维·ubuntu
GFCGUO13 分钟前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
winds~13 分钟前
ubuntu中软件的进程管理-结束软件运行
linux·运维·ubuntu
阳光不锈@41 分钟前
麒麟桌面系统安装和配置Node.js
linux·麒麟系统安装node.js
bush442 分钟前
使用root账号ssh登录虚拟机ubuntu
运维·ubuntu·ssh
叫我龙翔2 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·计算机网络
小诸葛的博客2 小时前
Ubuntu如何如何安装tcpdump
linux·ubuntu·tcpdump