码迷,mamicode.com
首页 > 数据库 > 详细

GDB调试多线程程序

时间:2015-12-22 22:46:48      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:

gdb有thread相关命令,如info thread(简写成info th)显示线程消息,b xx thread yy可以针对某个thread设置断点,thread xx(简写成thr xx)切换到某个thread。
再配合frame(简写f)相关的命令(比如updown在不同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行

 


 

 

GDB调试多线程程序

标签:

原文地址:http://www.cnblogs.com/bohaoist/p/5068197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!