曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 8196|回复: 0
打印 上一主题 下一主题

GDB 调试多线程

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2010-10-21 00:42:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
相关命令:
info threads : 给出关于当前所有线程的信息。
thread num :  其中 num 为线程号,如 thread 2 为查看第 2 号线程的信息。
break 88 thread 3: 当第 3 号线程达到代码的第 88 行时停止执行。
break 88 thread 3 if x==y : 当第 3 号线程达到代码的第 88 行,且变量 x 等于 y 时线程停止执行。

在调试线程中,用 info threads 查看线程状态时,如:

(gdb) info threads
[New Thread 0xb6bdcb90 (LWP 4928)]
  4 Thread 0xb6bdcb90 (LWP 4928)  0x002a5e88 in clone () from /lib/i686/nosegneg/libc.so.6
* 3 Thread 0xb75ddb90 (LWP 4791)  worker (unuse=0x0) at debug_pthread.c:35
  2 Thread 0xb7fdeb90 (LWP 4790)  0x080486b5 in worker (unuse=0x0) at debug_pthread.c:35
  1 Thread 0xb7fdf6c0 (LWP 4787)  0x002a5e88 in clone () from /lib/i686/nosegneg/libc.so.6

上面有星号的一行,表示当前在线程 3 中。此时,如果想查看此线程在干些什么,可以运行 bt 查看堆栈命令,如:

(gdb) thread 3
[Switching to thread 3 (Thread 0xb75ddb90 (LWP 4791))]#0  worker (unuse=0x0) at debug_pthread.c:35
35                      crossout(base);
(gdb) bt
#0  worker (unuse=0x0) at debug_pthread.c:35
#1  0x00d98869 in start_thread () from /lib/i686/nosegneg/libpthread.so.0
#2  0x002a5e9e in clone () from /lib/i686/nosegneg/libc.so.6

上面 worker 是一个指定线程执行的函数。

上面调试信息中用到的程序代码:http://www.groad.net/bbs/read.php?tid-2811.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-2 22:48 , Processed in 0.079139 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表