實習的項目需要用到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