一些除錯工具的使用

2021-09-30 04:26:00 字數 2025 閱讀 2442

最常用的除錯工具是gdb,在此就不多說了,家庭常備。下面主要介紹一些其他的工具,滿足一些特殊需要的。

(對於一些工具只是簡單介紹功能,如果感興趣或覺得有用可以查閱相關資料)

ctags:

作用:

為程式中所有函式建立索引,就像書籍總的目錄一樣。在當前目錄建立tags,

檔案中每行由函式名,宣告該函式的檔案和乙個可以在檔案中查詢該函式定義的正規表示式。

cxref:(很有用)

作用:

分析c語言源程式並生成乙個交叉引用表。它顯示每個符號(變數,#define,函式)都在程式中哪些地方使用過。

它生成乙個經過排序的列表,每個符號的定義位置用星號(*)座標記,。

事例:

cxref *.c *.h

cflow

作用:

列印出乙個函式呼叫庫。

prog/gprof:(極其有用)

作用:

當我們試著追蹤乙個程式的效能問題時乙個十分有用的技術就是執行效能測試 (execution profiling)。

通常被特殊的編譯器選項以及輔助程式所支援,乙個程式的效能顯示他在**花費時間。

使用:

-b            不再輸出統計圖表中每個欄位的詳細描述。

-p            只輸出函式的呼叫圖(call graph的那部分資訊)。

-q            只輸出函式的時間消耗列表。

-e name       不再輸出函式name 及其子函式的呼叫圖(除非它們有未被限制的其它父函式)。可以給定多個 -e 標誌。

乙個 -e 標誌只能指定乙個函式。

-e name       不再輸出函式name 及其子函式的呼叫圖,此標誌類似於 -e 標誌,但它在總時間和百分比時間的計算中

排除了由函式name 及其子函式所用的時間。

-f name       輸出函式name 及其子函式的呼叫圖。可以指定多個 -f 標誌。乙個 -f 標誌只能指定乙個函式。

-f name       輸出函式name 及其子函式的呼叫圖,它類似於 -f 標誌,但它在總時間和百分比時間計算中僅使用所列印的例程的時

間。可以指定多個 -f 標誌。乙個 -f 標誌只能指定乙個函式。-f 標誌覆蓋 -e 標誌。

-z           顯示使用次數為零的例程(按照呼叫計數和累積時間計算)

使用注意:

1)一般gprof只能檢視使用者函式資訊。如果想檢視庫函式的資訊,需要在編譯是再加入「-lc_p」編譯引數代替「-lc」編譯引數,這樣程式

會鏈結libc_p.a庫,才可以產生庫函式的profiling資訊。

2) gprof只能在程式正常結束退出之後才能生成程式測評報告,原因是gprof通過在atexit()裡註冊了乙個函式來產生結果資訊,任何

非正常退出都不會執行atexit()的動作,所以不會產生gmon.out檔案。如果你的程式是乙個不會退出的服務程式,那就只有修改**來

達到目的。如果不想改變程式的執行方式,可以新增乙個訊號處理函式解決問題(這樣對**修改最少),例如:

static void sighandler( int sig_no )  

signal( sigusr1, sighandler );

當使用kill -usr1 pid 後,程式退出,生成gmon.out檔案。

鏈結資料:

electricfence:

作用:

它嘗試用linux的虛擬記憶體機制來保護malloc和free所使用的記憶體,當它發現記憶體被破壞時就停止程式的使用。

使用:

gdb除錯工具使用

gdb命令使用格式如下 gdb 選項 可執行程式 core檔案 程序id 常用選項 c core檔案 使用指定core檔案檢查程式 h 列出命令選項的簡要介紹 n 忽略 gdbinit檔案中指定的執行命令 q 禁止顯示介紹資訊和版權資訊 s 檔案 使用儲存在指定檔案中的符號表 gdb除錯時會用到的命...

gdb除錯工具使用

gdb是gcc的除錯工具,主要用於c和c 語言編寫的程式。通過gdb除錯工具,我們可以設定斷點 檢視變數 動態改變程式的執行環境等,可以很好的幫助我們查詢程式的bug。gcc g test.c o test g g test.cpp o test 命令 解釋gdb program gdb progr...

gflags除錯工具的使用

gflags.exe工具是windbg工具的的乙個小工具,功能很強大,使用步驟如下 gflags.exe的作用 跟蹤被除錯的程式 使用步驟 1 將gflags.exe所在目錄放在系統環境變數中 2 設定cdb為預設jit just in time debugger,這樣在命令列執行遇到崩潰的時候就會...