GDB多執行緒除錯

2021-08-20 21:55:28 字數 1377 閱讀 4080

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

info threads:顯示當前可除錯的所有執行緒,gdb會給每個執行緒分配乙個id。前面有「 * 」號的表示當前正在除錯的執行緒。

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

break filename.cpp:linunum thread all:所有執行緒都在檔案filename.cpp的第linenum行有斷點。

set scheduler-locking off|on|step:在除錯某乙個執行緒時,其他執行緒是否執行。在使用step或continue命令除錯當前被除錯執行緒的時候,其他執行緒也是同時執行的,如果我們只想要被除錯的執行緒執行,而其他執行緒停止等待,那就要鎖定要除錯的執行緒,只讓它執行。其中:

show scheduler-locking: 檢視當前鎖定執行緒的模式。

gdb多執行緒除錯例項

#include 

#include

#include

#include

void* threadentry1(void* arg)

void* threadentry2(void* arg)

int main()

1、設定斷點

enb為y時表示該斷點啟用,enb為n時表示該斷點禁用。

2、檢視當前可除錯的執行緒

有「 * 」號的表示當前正在除錯的執行緒

執行到斷點2時,顯示可以除錯的執行緒有3個,正在執行的為執行緒1(執行緒id為2)

3、檢視所有執行緒堆疊資訊

4、切換執行緒

切換成功後發現「 * 」號的位置發生變化

5、檢視當前鎖定執行緒的模式

gdb多執行緒除錯

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

gdb 除錯多執行緒

設定core環境 uname a 檢視機器引數 ulimit a 檢視預設引數 ulimit c 1024 設定core檔案大小為1024 ulimit c unlimit 設定core檔案大小為無限 多執行緒如果dump,多為段錯誤,一般都涉及記憶體非法讀寫。可以這樣處理,使用下面的命令開啟系統開...

gdb 多執行緒除錯

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