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