GDB除錯之多執行緒

2022-09-21 19:54:11 字數 723 閱讀 2490

除錯時除了當前執行緒在執行,要想規定其他執行緒的運**況用這個命令,有三個選擇:

set scheduler-locking off:不鎖定任何執行緒,所有執行緒都可以繼續執行,這是預設選項。

set scheduler-locking on:只有當前執行緒可以執行,其他執行緒暫停執行。

set scheduler-locking step: 當單步執行某一線程時,其它執行緒不會執行,同時保證在除錯過程中當前執行緒不會發生改變。但如果該模式下執行 continue、until、finish 命令,則其它執行緒也會執行,並且如果某一線程執行過程遇到斷點,則 gdb 偵錯程式會將該執行緒作為當前執行緒。

note:只有執行緒建立之後這個命令的暫停效果才有效,比如set scheduler-locking on開啟之後,但pthread_create語句還沒執行,這時執行continue後邊創造的執行緒不會被暫停,必須等執行緒創造後再執行coneinue

顯示當前有幾個執行緒,前邊有執行緒id。

切換執行緒,id為info threads前邊顯示的id。

為某個執行緒設定斷點

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