标签:
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行
标签:
原文地址:http://www.cnblogs.com/bohaoist/p/5068197.html