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