基于Linux調(diào)試工具strace與gdb的常用命令總結(jié)
更新時(shí)間:2013年06月03日 09:27:48 作者:
本篇文章是對(duì)Linux調(diào)試工具strace與gdb的常用命令進(jìn)行了總結(jié)與分析,需要的朋友參考下
strace和gdb是Linux環(huán)境下的兩個(gè)常用調(diào)試工具,這里是個(gè)人在使用過(guò)程中對(duì)這兩個(gè)工具常用參數(shù)的總結(jié),留作日后查看使用。
strace調(diào)試工具
strace工具用于跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào),包括參數(shù)、返回值、執(zhí)行時(shí)間。在Linux中,用戶(hù)程序要訪(fǎng)問(wèn)系統(tǒng)設(shè)備,必須由用戶(hù)態(tài)切換到內(nèi)核態(tài),這是通過(guò)系統(tǒng)調(diào)用發(fā)起并完成的。
strace常用參數(shù):
-c 統(tǒng)計(jì)每種系統(tǒng)調(diào)用執(zhí)行的時(shí)間、調(diào)用次數(shù)、出錯(cuò)次數(shù),程序退出時(shí)給出報(bào)告
-p pid 跟蹤指定的進(jìn)程,可以使用多個(gè)-p同時(shí)跟蹤多個(gè)進(jìn)程
-o filename strace默認(rèn)輸出到stdout,-o可以將輸出寫(xiě)入到指定的文件
-f 跟蹤由fork產(chǎn)生的子進(jìn)程的系統(tǒng)調(diào)用
-ff 常與-o選項(xiàng)一起使用,不同進(jìn)程(子進(jìn)程)產(chǎn)生的系統(tǒng)調(diào)用輸出到各個(gè)filename.pid文件中
-F 嘗試跟蹤vfork子進(jìn)程系統(tǒng)調(diào)用,注意:與-f同時(shí)使用時(shí), vfork不被跟蹤
-e expr 輸出過(guò)濾表達(dá)式,可以過(guò)濾掉不想輸出的strace結(jié)果
-e trace=set 指定跟蹤set中的系統(tǒng)調(diào)用
-e trace=network 跟蹤與網(wǎng)絡(luò)有關(guān)的所有系統(tǒng)調(diào)用
-e strace=signal 跟蹤所有與系統(tǒng)信號(hào)有關(guān)的系統(tǒng)調(diào)用
-e trace=ipc 跟蹤所有與進(jìn)程通訊有關(guān)的系統(tǒng)調(diào)用
-e signal=set 指定跟蹤set中的信號(hào)
-e read=set 輸出從指定文件中讀出的數(shù)據(jù),例如-e read=3,5
-e write=set 輸出寫(xiě)入到指定文件中的數(shù)據(jù),例如-e write=1
-r 打印每一個(gè)系統(tǒng)調(diào)用的相對(duì)時(shí)間
-t 在輸出中的每一行前加上時(shí)間信息
-tt 在輸出中的每一行前加上時(shí)間信息,時(shí)間精確到微秒級(jí)
-ttt 在輸出中的每一行前加上時(shí)間信息,輸出為相對(duì)時(shí)間
-s 指定每一行輸出字符串的長(zhǎng)度(默認(rèn)為32)
strace使用舉例:
strace -t whoami #跟蹤whoami可執(zhí)行程序,每行輸出結(jié)果前打印執(zhí)行的時(shí)間
strace -p 17151 -p 17152 -p 17153 #同時(shí)跟蹤進(jìn)程17151、17152、17153
strace -f -e trace=read,write -p 17151 -o log #跟蹤進(jìn)程17151及子進(jìn)程中read和write系統(tǒng)調(diào)用,輸出到log文件
gdb調(diào)試工具
GDB是GNU開(kāi)源組織發(fā)布的一個(gè)強(qiáng)大的UNIX下的程序調(diào)試工具。gcc編譯時(shí)加上-g參數(shù),可以使可執(zhí)行程序加上gdb調(diào)試信息。
(1)info
簡(jiǎn)寫(xiě):i,列出gdb子命令的信息,如info break,info variables,info stack等。
(2)list [file:]function
簡(jiǎn)寫(xiě):l,查看當(dāng)前行的上下文,默認(rèn)為10行,也可以設(shè)置在某個(gè)函數(shù)處列出源碼。
(3)edit [file:]function
簡(jiǎn)寫(xiě):e,編輯當(dāng)前所在的行,也可以編輯某個(gè)函數(shù)的源碼。
(4)break [file:]function
簡(jiǎn)寫(xiě):b,設(shè)置斷點(diǎn),可以設(shè)置在某行或某個(gè)函數(shù)處。
(5)run [arglist]
簡(jiǎn)寫(xiě):r,運(yùn)行程序至斷點(diǎn)處停住,run命令之后可以加上調(diào)試程序需要的參數(shù)。
(6)next
簡(jiǎn)寫(xiě):n,單條語(yǔ)句執(zhí)行。
(7)continue
簡(jiǎn)寫(xiě):c,繼續(xù)運(yùn)行程序至下一個(gè)斷點(diǎn)。
(8)print
簡(jiǎn)寫(xiě):p,打印變量的值。
(9)bt
查看函數(shù)堆棧信息。
(10)enter
回車(chē)鍵,重復(fù)上一次調(diào)試命令。
(11)help [name]
顯示指定的gdb命令的幫助信息。
(12)quit
簡(jiǎn)寫(xiě):q,退出gdb。
strace調(diào)試工具
strace工具用于跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào),包括參數(shù)、返回值、執(zhí)行時(shí)間。在Linux中,用戶(hù)程序要訪(fǎng)問(wèn)系統(tǒng)設(shè)備,必須由用戶(hù)態(tài)切換到內(nèi)核態(tài),這是通過(guò)系統(tǒng)調(diào)用發(fā)起并完成的。
strace常用參數(shù):
-c 統(tǒng)計(jì)每種系統(tǒng)調(diào)用執(zhí)行的時(shí)間、調(diào)用次數(shù)、出錯(cuò)次數(shù),程序退出時(shí)給出報(bào)告
-p pid 跟蹤指定的進(jìn)程,可以使用多個(gè)-p同時(shí)跟蹤多個(gè)進(jìn)程
-o filename strace默認(rèn)輸出到stdout,-o可以將輸出寫(xiě)入到指定的文件
-f 跟蹤由fork產(chǎn)生的子進(jìn)程的系統(tǒng)調(diào)用
-ff 常與-o選項(xiàng)一起使用,不同進(jìn)程(子進(jìn)程)產(chǎn)生的系統(tǒng)調(diào)用輸出到各個(gè)filename.pid文件中
-F 嘗試跟蹤vfork子進(jìn)程系統(tǒng)調(diào)用,注意:與-f同時(shí)使用時(shí), vfork不被跟蹤
-e expr 輸出過(guò)濾表達(dá)式,可以過(guò)濾掉不想輸出的strace結(jié)果
-e trace=set 指定跟蹤set中的系統(tǒng)調(diào)用
-e trace=network 跟蹤與網(wǎng)絡(luò)有關(guān)的所有系統(tǒng)調(diào)用
-e strace=signal 跟蹤所有與系統(tǒng)信號(hào)有關(guān)的系統(tǒng)調(diào)用
-e trace=ipc 跟蹤所有與進(jìn)程通訊有關(guān)的系統(tǒng)調(diào)用
-e signal=set 指定跟蹤set中的信號(hào)
-e read=set 輸出從指定文件中讀出的數(shù)據(jù),例如-e read=3,5
-e write=set 輸出寫(xiě)入到指定文件中的數(shù)據(jù),例如-e write=1
-r 打印每一個(gè)系統(tǒng)調(diào)用的相對(duì)時(shí)間
-t 在輸出中的每一行前加上時(shí)間信息
-tt 在輸出中的每一行前加上時(shí)間信息,時(shí)間精確到微秒級(jí)
-ttt 在輸出中的每一行前加上時(shí)間信息,輸出為相對(duì)時(shí)間
-s 指定每一行輸出字符串的長(zhǎng)度(默認(rèn)為32)
strace使用舉例:
strace -t whoami #跟蹤whoami可執(zhí)行程序,每行輸出結(jié)果前打印執(zhí)行的時(shí)間
strace -p 17151 -p 17152 -p 17153 #同時(shí)跟蹤進(jìn)程17151、17152、17153
strace -f -e trace=read,write -p 17151 -o log #跟蹤進(jìn)程17151及子進(jìn)程中read和write系統(tǒng)調(diào)用,輸出到log文件
gdb調(diào)試工具
GDB是GNU開(kāi)源組織發(fā)布的一個(gè)強(qiáng)大的UNIX下的程序調(diào)試工具。gcc編譯時(shí)加上-g參數(shù),可以使可執(zhí)行程序加上gdb調(diào)試信息。
(1)info
簡(jiǎn)寫(xiě):i,列出gdb子命令的信息,如info break,info variables,info stack等。
(2)list [file:]function
簡(jiǎn)寫(xiě):l,查看當(dāng)前行的上下文,默認(rèn)為10行,也可以設(shè)置在某個(gè)函數(shù)處列出源碼。
(3)edit [file:]function
簡(jiǎn)寫(xiě):e,編輯當(dāng)前所在的行,也可以編輯某個(gè)函數(shù)的源碼。
(4)break [file:]function
簡(jiǎn)寫(xiě):b,設(shè)置斷點(diǎn),可以設(shè)置在某行或某個(gè)函數(shù)處。
(5)run [arglist]
簡(jiǎn)寫(xiě):r,運(yùn)行程序至斷點(diǎn)處停住,run命令之后可以加上調(diào)試程序需要的參數(shù)。
(6)next
簡(jiǎn)寫(xiě):n,單條語(yǔ)句執(zhí)行。
(7)continue
簡(jiǎn)寫(xiě):c,繼續(xù)運(yùn)行程序至下一個(gè)斷點(diǎn)。
(8)print
簡(jiǎn)寫(xiě):p,打印變量的值。
(9)bt
查看函數(shù)堆棧信息。
(10)enter
回車(chē)鍵,重復(fù)上一次調(diào)試命令。
(11)help [name]
顯示指定的gdb命令的幫助信息。
(12)quit
簡(jiǎn)寫(xiě):q,退出gdb。
您可能感興趣的文章:
- Linux 入門(mén)常用命令 password — 修改密碼,改變用戶(hù)
- Linux 中 CURL常用命令詳解
- linux系統(tǒng)安裝git及git常用命令
- 很實(shí)用的Linux 系統(tǒng)運(yùn)維常用命令及常識(shí)(超實(shí)用)
- Linux常用命令全集(超全面)
- linux下防火墻開(kāi)啟某個(gè)端口號(hào)及防火墻常用命令使用(詳解)
- Linux操作系統(tǒng)操作MySQL常用命令小結(jié)
- Linux 常用命令大全(經(jīng)典)
- Linux下find和grep常用命令及區(qū)別介紹
- 積累linux常用命令大全
- LINUX入門(mén)級(jí)常用命令20條整理
- 日常整理linux常用命令大全(收藏)
- Linux常用命令last的使用方法詳解
- 詳解Linux防火墻iptables禁IP與解封IP常用命令
- linux 入侵常用命令匯編
- Linux系統(tǒng)信息查看常用命令
- 新手入門(mén)級(jí)linux系統(tǒng)常用命令大全
- 最新Linux下安裝tomcat8圖解過(guò)程
相關(guān)文章
YII2框架中查詢(xún)生成器Query()的使用方法示例
這篇文章主要介紹了YII2框架中查詢(xún)生成器Query()的使用方法,結(jié)合實(shí)例形式詳細(xì)分析了YII2查詢(xún)生成器Query()的基本功能與使用方法,需要的朋友可以參考下2020-03-03phpcms配置列表頁(yè)以及獲得文章發(fā)布時(shí)間
這篇文章主要介紹了phpcms配置列表頁(yè)以及獲得文章發(fā)布時(shí)間 ,需要的朋友可以參考下2017-07-07php die()與exit()的區(qū)別實(shí)例詳解
php中die()與exit()的真正區(qū)別是什么因,我們百度一下發(fā)現(xiàn)die是退出并釋放內(nèi)存,exit是退出但不釋放內(nèi)存了,那么真的是這樣嗎,需要的朋友可以參考下2016-12-12php中輸出json對(duì)象的值(實(shí)現(xiàn)方法)
下面小編就為大家分享一篇php中輸出json對(duì)象的值(實(shí)現(xiàn)方法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03PHP設(shè)計(jì)模式之迭代器(Iterator)模式入門(mén)與應(yīng)用詳解
這篇文章主要介紹了PHP設(shè)計(jì)模式之迭代器(Iterator)模式,結(jié)合實(shí)例形式詳細(xì)分析了PHP迭代器模式的相關(guān)概念、原理、應(yīng)用案例及操作注意事項(xiàng),需要的朋友可以參考下2019-12-12php+layui數(shù)據(jù)表格實(shí)現(xiàn)數(shù)據(jù)分頁(yè)渲染代碼
今天小編就為大家分享一篇php+layui數(shù)據(jù)表格實(shí)現(xiàn)數(shù)據(jù)分頁(yè)渲染代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10