Linux除錯工具strace和gdb常用命令小結

2022-05-09 21:56:09 字數 1888 閱讀 1783

linux除錯工具strace和gdb常用命令小結

strace和gdb是linux環境下的兩個常用除錯工具,這裡是個人在使用過程中對這兩個工具常用引數的總結,留作日後檢視使用。

strace除錯工具

strace工具用於跟蹤程序執行時的系統呼叫和所接收的訊號,包括引數、返回值、執行時間。在linux中,使用者程式要訪問系統裝置,必須由使用者態切換到核心態,這是通過系統呼叫發起並完成的。

strace常用引數:

-c  統計每種系統呼叫執行的時間、呼叫次數、出錯次數,程式退出時給出報告

-p pid  跟蹤指定的程序,可以使用多個-p同時跟蹤多個程序

-o filename  strace預設輸出到stdout,-o可以將輸出寫入到指定的檔案

-f  跟蹤由fork產生的子程序的系統呼叫

-ff  常與-o選項一起使用,不同程序(子程序)產生的系統呼叫輸出到各個filename.pid檔案中

-f  嘗試跟蹤vfork子程序系統呼叫,注意:與-f同時使用時, vfork不被跟蹤

-e expr  輸出過濾表示式,可以過濾掉不想輸出的strace結果

-e trace=set  指定跟蹤set中的系統呼叫

-e trace=network  跟蹤與網路有關的所有系統呼叫

-e strace=signal  跟蹤所有與系統訊號有關的系統呼叫

-e trace=ipc  跟蹤所有與程序通訊有關的系統呼叫

-e signal=set  指定跟蹤set中的訊號

-e read=set  輸出從指定檔案中讀出的資料,例如-e read=3,5

-e write=set  輸出寫入到指定檔案中的資料,例如-e write=1

-r  列印每乙個系統呼叫的相對時間

-t  在輸出中的每一行前加上時間資訊

-tt  在輸出中的每一行前加上時間資訊,時間精確到微秒級

-ttt  在輸出中的每一行前加上時間資訊,輸出為相對時間

-s  指定每一行輸出字串的長度(預設為32)

strace使用舉例:

strace -t whoami #跟蹤whoami可執行程式,每行輸出結果前列印執行的時間

strace -p 17151 -p 17152 -p 17153 #同時跟蹤程序17151、17152、17153

strace -f -e trace=read,write -p 17151 -o log #跟蹤程序17151及子程序中read和write系統呼叫,輸出到log檔案

gdb除錯工具

gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。gcc編譯時加上-g引數,可以使可執行程式加上gdb除錯資訊。

(1)info

簡寫:i,列出gdb子命令的資訊,如info break,info variables,info stack等。

(2)list [file:]function

簡寫:l,檢視當前行的上下文,預設為10行,也可以設定在某個函式處列出原始碼。

(3)edit [file:]function

(4)break [file:]function

簡寫:b,設定斷點,可以設定在某行或某個函式處。

(5)run [arglist]

簡寫:r,執行程式至斷點處停住,run命令之後可以加上除錯程式需要的引數。

(6)next

簡寫:n,單條語句執行。

(7)continue

(8)print

簡寫:p,列印變數的值。

(9)bt

檢視函式堆疊資訊。

(10)enter

回車鍵,重複上一次除錯命令。

(11)help [name]

顯示指定的gdb命令的幫助資訊。

(12)quit

簡寫:q,退出gdb。

除錯工具Strace

0.strace是什麼?按照strace官網的描述,strace是乙個可用於診斷 除錯和教學的linux使用者空間 我們用它來監控使用者空間程序和核心的互動,比如系統呼叫 訊號傳遞 程序狀態變更等。原始碼 1.編譯移植strace configure prefix pwd install 以x86平...

Linux除錯工具strace和lsof學習

1 strace工具 1 簡介 strace是乙個集診斷 除錯 統計於一體的工具,常用來跟蹤程序執行時的系統呼叫和所接收的訊號。在linux世界,程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置時,必須由使用者態切換至核心態模式,通過系統呼叫訪問硬體裝置。strace 可以跟蹤到乙個程序產生的系統呼...

linux命令之除錯工具strace的深入分析

參考 1 linux的strace命令 詳解 txt 新浪電子書可 2man strace 乙個基本上通用的 完整的用法 strace o output.txt t tt e trace all p 28979 上面的含義是 跟蹤28979程序的所有系統呼叫 e trace all 並統計系統呼叫的...