Gdb 除錯多執行緒程式

2021-06-23 06:09:22 字數 682 閱讀 3072

gdb多執行緒除錯的基本命令。

info threads顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。 前面有*的是當前除錯的執行緒。

thread id切換當前除錯的執行緒為指定id的執行緒。

break thread_test.c:123 thread all在所有執行緒中相應的行上設定斷點

set scheduler-locking off|on|step估計是實際使用過多執行緒除錯的人都可以發現,在使用step或者continue命令除錯當前被除錯執行緒的時候,其他執行緒也是同時執行的,怎麼只讓被除錯程式執行呢?通過這個命令就可以實現這個需求。off 不鎖定任何執行緒,也就是所有執行緒都執行,這是預設值。 on 只有當前被除錯程式會執行。 step 在單步的時候,除了next過乙個函式的情況(熟悉情況的人可能知道,這其實是乙個設定斷點然後continue的行為)以外,只有當前執行緒會執行。

自己幾個不太熟悉的gdb命令:

next/n number 執行下一行**,但是不會進入函式內部。

until number / until number ifcondition 繼續執行直到指定行號,或者函式,位址等。

where 顯示當前的行號和所處的函式。

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...

gdb多執行緒除錯

先介紹一下gdb多執行緒除錯的基本命令。info threads顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。前面有 的是當前除錯的執行緒。thread id切換當前除錯的執行緒為指定id的執行緒。break thread test.c 12...