gdb對於多執行緒程式的除錯有如下的支援:
(gdb) r
starting program: /root/thread
[new thread 1073951360 (lwp 12900)]
[new thread 1082342592 (lwp 12907)]---以下三個為新產生的執行緒
[new thread 1090731072 (lwp 12908)]
[new thread 1099119552 (lwp 12909)]
(gdb) info threads
4 thread 1099119552 (lwp 12940) 0xffffe002 in ?? ()
3 thread 1090731072 (lwp 12939) 0xffffe002 in ?? ()
2 thread 1082342592 (lwp 12938) 0xffffe002 in ?? ()
*1 thread 1073951360 (lwp 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
(gdb)
注意,行首的藍色文字為gdb分配的執行緒號,對執行緒進行切換時,使用該該號碼,而不是上文標出的綠色數字。
另外,行首的紅色星號標識了當前活動的執行緒
(gdb) info threads
4 thread 1099119552 (lwp 12940) 0xffffe002 in ?? ()
3 thread 1090731072 (lwp 12939) 0xffffe002 in ?? ()
2 thread 1082342592 (lwp 12938) 0xffffe002 in ?? ()
* 1 thread 1073951360 (lwp 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
(gdb)thread 4
[switching to thread 4 (thread 1099119552 (lwp 12940))]#0 0xffffe002 in ?? ()
(gdb) info threads
* 4 thread 1099119552 (lwp 12940) 0xffffe002 in ?? ()
3 thread 1090731072 (lwp 12939) 0xffffe002 in ?? ()
2 thread 1082342592 (lwp 12938) 0xffffe002 in ?? ()
1 thread 1073951360 (lwp 12931) main (argc=1, argv=0xbfffda04) at thread.c:21
(gdb)
以上即為使用gdb提供的對多執行緒進行除錯的一些基本命令。另外,gdb也提供對執行緒的斷點設定以及對指定或所有執行緒發布命令的命令。
cliffwoo
GDB除錯多執行緒程式
info threads 顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。前面有 的是當前除錯的執行緒。thread id 切換當前除錯的執行緒為指定id的執行緒 break thread test.c 123 thread all 在所有執行...
Gdb 除錯多執行緒程式
gdb多執行緒除錯的基本命令。info threads顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。前面有 的是當前除錯的執行緒。thread id切換當前除錯的執行緒為指定id的執行緒。break thread test.c 123 thr...
vc除錯多執行緒程式的方法
1 對一條特定的執行緒進行除錯 visual c 偵錯程式支援多線的情況,如果你在許多執行緒都呼叫的函式中 有個方法可以避開這個問題,就是掛起所有執行緒,除了你感興趣的那條 要除錯 的那條 在偵錯程式中開啟 debug 選單並選擇 thread 你就可以獲得乙個執行緒對 話框,在這裡你可以掛起所有的...