Gdb多執行緒除錯

2021-10-07 08:10:46 字數 891 閱讀 9140

1.除錯方法

# ps aux| grep proname //找出程序的pid

# gdb -p pid //使用gdb attach可以除錯正在執行的程序

# info threads //檢視具體的執行緒id

# thread x //切換執行緒到具體的執行緒x

# b func

# set scheduler-locking off //讓所有的執行緒執行.gdb預設除錯狀態下只有當前的執行緒在執行,所以先要讓整個程式執行起來。

# c //讓執行緒執行,等待程式停在下乙個斷點處

# display/x len //顯示16進製制

//取消顯示,這樣取消無法重新顯示,只能重新屬於命令

# undisplay num

如:# undisplay 1

//關閉/開啟display顯示

# disable display 5 //關閉5號變數值列印

# enable display 5 //開啟5號變數值列印

# disbale display //關閉所有變數值列印

# enable display //開啟所有變數值列印

//顯示多個參引數

# display

# finsh //結束此函式

# return //return此函式

2。檢視本地變數資料實用技巧

# set print pretty on //按格式列印struct結構體時

# set print union //列印struct時按格式列印內部的union

# set print array //按格式列印陣列

# set print element 0 //列印字串不省略列印

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