您的位置:首页 > 其它

GDB调试多线程程序

2015-12-22 21:33 225 查看
gdb有thread相关命令,如
info thread(简写成info th)
显示线程消息,
b xx thread yy
可以针对某个thread设置断点,
thread xx(简写成thr xx)
切换到某个thread。

再配合frame(简写f)相关的命令(比如
up
down
在不同frame间跳转),基本可以处理若干个不同的线程间的debug……

其他的debugger,应该也会有同样的功能。

不过如果用的线程比较多的话……建议还是写一些辅助函数,在debug过程中打印出tid,然后对比一些蹊跷的地方,效果会更好。

查找进程id

ps -e | grep a.out(a.out)为名字
12826 pts/3    00:00:00 a.out //进程id为12826

启动gdb attach 进程

[root@localhost ~]# gdb a.out 12826

(gdb) info threads //显示所有线程信息

(gdb) thread 2  //跳到第2个线程

(gdb) bt  //查看线程2的堆栈,可以发现该线程堵塞在lock.c第17行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: