gdb多線程調試技巧

實習的項目需要用到gdb多線程調試,故搜索記錄下常用語句,以便日後查詢。

內容整理自網絡。

常用命令:

*可直接輸入簡寫語句,也可輸入完整語句。
1.b main.cpp:15 在main.cpp的第15行打斷點。後面可接條件,如if i==2,則僅當滿足條件時,斷點生效。
2. r [option] 是run的簡寫。繼續運行,如後面無斷點,則程序會一直運行至最後。
3. n 是next的簡寫,運行下一行。
4. s 是step的簡寫,進入下一個要執行的函數內部。
5. start 單步執行,開始程序,停止在第一行。
6. set var a=1 設置變量值,此處把變量a設爲1。
7. bt 查看函數調用棧幀和堆棧。
8.c 是continue的簡寫,繼續運行。
8. p a 是print的簡寫,打印變量值,此處爲打印變量a的值。
9. info 用於查看信息,如 info break 可查看斷點情況。
10. d bID,d是del的簡寫,可刪除斷點,bID是斷點編號,可通過上述命令查詢。
11. dispaly a 每一步執行,都會打印該變量,此處爲打印a。
12. undispaly dID,上一步的逆操作,取消打印某變量。注意此處dID爲編號,非變量名。需通過info display查看編號。
13. q 是quit的簡寫,退出gdb。

多線程命令:

1.info threads ,查看當前進程的線程。gdb會爲每個線程分配一個ID,前面帶“*”的表示當前運行的線程。
2.thread ID,切換調試的線程。
6. b main.c:10 thread all.爲所有線程打斷點。
7. set scheduler-locking off|on|step
8. thread apply ID1 ID2 command ID1 ID2執行命令。
9. thread apply all command 所有線程執行。

調試宏定義:

由於宏是預編譯的,默認無法打印。若需調試宏定義,需在編譯程序時加上參數 -ggdb3

發佈了12 篇原創文章 · 獲贊 17 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章