- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認證網(wǎng)站身份V標記
- 域名注冊服務機構(gòu)許可:滇D3-20230001
- 代理域名注冊服務機構(gòu):新網(wǎng)數(shù)碼
strace和gdb是Linux環(huán)境下的兩個常用調(diào)試工具,這里是個人在使用過程中對這兩個工具常用參數(shù)的總結(jié),留作日后查看使用。
strace調(diào)試工具
strace工具用于跟蹤進程執(zhí)行時的系統(tǒng)調(diào)用和所接收的信號,包括參數(shù)、返回值、執(zhí)行時間。在Linux中,用戶程序要訪問系統(tǒng)設備,必須由用戶態(tài)切換到內(nèi)核態(tài),這是通過系統(tǒng)調(diào)用發(fā)起并完成的。
strace常用參數(shù):
-c 統(tǒng)計每種系統(tǒng)調(diào)用執(zhí)行的時間、調(diào)用次數(shù)、出錯次數(shù),程序退出時給出報告
-p pid 跟蹤指定的進程,可以使用多個-p同時跟蹤多個進程
-o filename strace默認輸出到stdout,-o可以將輸出寫入到指定的文件
-f 跟蹤由fork產(chǎn)生的子進程的系統(tǒng)調(diào)用
-ff 常與-o選項一起使用,不同進程(子進程)產(chǎn)生的系統(tǒng)調(diào)用輸出到各個filename.pid文件中
-F 嘗試跟蹤vfork子進程系統(tǒng)調(diào)用,注意:與-f同時使用時, vfork不被跟蹤
-e expr 輸出過濾表達式,可以過濾掉不想輸出的strace結(jié)果
-e trace=set 指定跟蹤set中的系統(tǒng)調(diào)用
-e trace=network 跟蹤與網(wǎng)絡有關的所有系統(tǒng)調(diào)用
-e strace=signal 跟蹤所有與系統(tǒng)信號有關的系統(tǒng)調(diào)用
-e trace=ipc 跟蹤所有與進程通訊有關的系統(tǒng)調(diào)用
-e signal=set 指定跟蹤set中的信號
-e read=set 輸出從指定文件中讀出的數(shù)據(jù),例如-e read=3,5
-e write=set 輸出寫入到指定文件中的數(shù)據(jù),例如-e write=1
-r 打印每一個系統(tǒng)調(diào)用的相對時間
-t 在輸出中的每一行前加上時間信息
-tt 在輸出中的每一行前加上時間信息,時間精確到微秒級
-ttt 在輸出中的每一行前加上時間信息,輸出為相對時間
-s 指定每一行輸出字符串的長度(默認為32)
strace使用舉例:
strace -t whoami #跟蹤whoami可執(zhí)行程序,每行輸出結(jié)果前打印執(zhí)行的時間
strace -p 17151 -p 17152 -p 17153 #同時跟蹤進程17151、17152、17153
strace -f -e trace=read,write -p 17151 -o log #跟蹤進程17151及子進程中read和write系統(tǒng)調(diào)用,輸出到log文件
gdb調(diào)試工具
GDB是GNU開源組織發(fā)布的一個強大的UNIX下的程序調(diào)試工具。gcc編譯時加上-g參數(shù),可以使可執(zhí)行程序加上gdb調(diào)試信息。
(1)info
簡寫:i,列出gdb子命令的信息,如info break,info variables,info stack等。
(2)list [file:]function
簡寫:l,查看當前行的上下文,默認為10行,也可以設置在某個函數(shù)處列出源碼。
(3)edit [file:]function
簡寫:e,編輯當前所在的行,也可以編輯某個函數(shù)的源碼。
(4)break [file:]function
簡寫:b,設置斷點,可以設置在某行或某個函數(shù)處。
(5)run [arglist]
簡寫:r,運行程序至斷點處停住,run命令之后可以加上調(diào)試程序需要的參數(shù)。
(6)next
簡寫:n,單條語句執(zhí)行。
(7)continue
簡寫:c,繼續(xù)運行程序至下一個斷點。
(8)print
簡寫:p,打印變量的值。
(9)bt
查看函數(shù)堆棧信息。
(10)enter
回車鍵,重復上一次調(diào)試命令。
(11)help [name]
顯示指定的gdb命令的幫助信息。
(12)quit
簡寫:q,退出gdb。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP