執行緒的檢視以及利用gdb除錯多執行緒

2021-09-20 03:12:44 字數 2173 閱讀 9331

gdb除錯常用命令,attach,br,n,bt

在oceanbase除錯中,必須用到gdb,將常用命令蒐集記錄如下:

1. attach: 用gdb除錯乙個正在執行中的程序

gdb pid

2. br: 設定斷點

br filename:line_num

br namespace::classname::func_name

3. n: 單步跳過   s: 單步進入

4. finish:執行到函式retun返回

5. list: 列出當前位置之後的10行**;list line_number: 列出line_number之後的十行**

6. bt(backtrace):列出呼叫棧

7. info locals:列出當前函式的區域性變數

8. p var_:列印變數值

9. info breakpoints:列出所有斷點

10. delete breakpoints:刪除所有斷點;delete breakpoints id:刪除編號為id的斷點;disable/enable breakpoints id:禁用/啟用斷點

11. break ... if ... 條件中斷

表 10.1. gdb基本命令1命令

描述backtrace(或bt)

檢視各級函式呼叫及引數

finish

執行到當前函式返回,然後停下來等待命令

frame(或f) 幀編號

選擇棧幀

info(或i) locals

檢視當前棧幀區域性變數的值

list(或l)

列出源**,接著上次的位置往下列,每次列10行

list 行號

列出從第幾行開始的源**

list 函式名

列出某個函式的源**

next(或n)

執行下一行語句

print(或p)

列印表示式的值,通過表示式可以修改變數的值或者呼叫函式

set var

修改變數的值

start

開始執行程式,停在main函式第一行語句前面等待命令

step(或s)

執行下一行語句,如果有函式呼叫則進入到函式中

表 10.2. gdb基本命令2命令

描述break(或b) 行號

在某一行設定斷點

break 函式名

在某個函式開頭設定斷點

break...if...

設定條件斷點

continue(或c)

從當前位置開始連續而非單步執行程式

delete breakpoints

刪除斷點

display 變數名

跟蹤檢視乙個變數,每次停下來都顯示它的值

disable breakpoints

禁用斷點

enable breakpoints

啟用斷點

info(或i) breakpoints

檢視當前設定了哪些斷點

run(或r)

從頭開始連續而非單步執行程式

undisplay

取消對先前設定的那些變數的跟蹤

命令描述

watch

設定觀察點

info(或i) watchpoints

檢視當前設定了哪些觀察點

x從某個位置開始列印儲存器的一段內容,全部當成位元組來看,而不區分哪些位元組屬於哪些變數

總結除錯多執行緒的命令

c++中用gdb除錯的注意事項:

1. 函式斷點的結構是namespace::classname::funcname

(gdb) b oceanbase::mergeserver::obmssqlscanevent::process_result

breakpoint 1 at 0x435c0a: file ob_ms_sql_scan_event.cpp, line 533.

還有乙個小問題,網上很少提到:被除錯的程式必須和原始碼放在同一臺機器上,才能用list命令列出原始碼,否則提示找不到。

直接回車,總可以重複執行上乙個命令。

參考: 舉例講解

涉及到多執行緒除錯,參考:

執行緒的檢視以及利用gdb除錯多執行緒               舉例講解

gdb常用除錯命令以及多執行緒堆疊的檢視

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這個道理。一般來說gdb主要除錯...

利用GDB進行多執行緒除錯

一 多執行緒除錯 多執行緒除錯重要就是下面幾個命令 info thread 檢視當前程序的執行緒。thread 切換除錯的執行緒為指定id的執行緒。break file.c 100 thread all 在file.c檔案第100行處為所有經過這裡的執行緒設定斷點。set scheduler loc...

利用GDB進行多執行緒除錯

一 多執行緒除錯 多執行緒除錯重要就是下面幾個命令 info thread 檢視當前程序的執行緒。thread 切換除錯的執行緒為指定id的執行緒。break file.c 100 thread all 在file.c檔案第100行處為所有經過這裡的執行緒設定斷點。set scheduler loc...