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 並統計系統呼叫的...