除錯時除了當前執行緒在執行,要想規定其他執行緒的運**況用這個命令,有三個選擇:
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...