GDB除錯多執行緒及死鎖

2021-07-10 10:06:10 字數 576 閱讀 1314

參考文章:

我在這裡總結一下:

檢視正在執行的所有執行緒

info threads

切換到指定執行緒
thread id //這裡的id是info threads後各執行緒前面的序號

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

除錯死鎖流程

開啟core檔案生成

ulimit -c unlimited

程式設計源程式加 -g 選項

檢視程序號

ps aux | grep a.out

終止程序

kill -11 程序id

檢視core檔案資訊

gdb a.out core

然後可以看到執行緒的棧資訊了,顯示了各個執行緒執行到了哪乙個函式,是哪一行的函式導致了死鎖。

gdb除錯多執行緒出現的死鎖

多執行緒的條件下,程式很容易出現死鎖,此時各個執行緒處於等待狀態,可以通過gdb除錯找到死鎖出現的地方。例子 include include include pthread mutex t locka pthread mutex initializer pthread mutex t lockb p...

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,多為段錯誤,一般都涉及記憶體非法讀寫。可以這樣處理,使用下面的命令開啟系統開...