您好,登錄后才能下訂單哦!
小編給大家分享一下使用linux的strace命令跟蹤系統(tǒng)調(diào)用,相信大部分人都還不怎么了解,因此分享這邊文章給大家學(xué)習(xí),希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學(xué)習(xí)方法吧!
strace命令是一個集診斷、調(diào)試、統(tǒng)計與一體的工具,我們可以使用strace對應(yīng)用的系統(tǒng)調(diào)用和信號傳遞的跟蹤結(jié)果來對應(yīng)用進(jìn)行分析,以達(dá)到解決問題或者是了解應(yīng)用工作過程的目的。
strace常用來跟蹤進(jìn)程執(zhí)行時的系統(tǒng)調(diào)用和所接收的信號。 在Linux世界,進(jìn)程不能直接訪問硬件設(shè)備,當(dāng)進(jìn)程需要訪問硬件設(shè)備(比如讀取磁盤文件,接收網(wǎng)絡(luò)數(shù)據(jù)等等)時,必須由用戶態(tài)模式切換至內(nèi)核態(tài)模式,通 過系統(tǒng)調(diào)用訪問硬件設(shè)備。strace可以跟蹤到一個進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時間。
語法格式:strace [參數(shù)]
常用參數(shù):
-c | 統(tǒng)計每一系統(tǒng)調(diào)用的所執(zhí)行的時間,次數(shù)和出錯的次數(shù)等 |
-d | 輸出strace關(guān)于標(biāo)準(zhǔn)錯誤的調(diào)試信息 |
-f | 跟蹤由fork調(diào)用所產(chǎn)生的子進(jìn)程 |
-F | 嘗試跟蹤vfork調(diào)用.在-f時,vfork不被跟蹤 |
-a | 設(shè)置返回值的輸出位置.默認(rèn) 為40 |
-r | 打印出相對時間關(guān)于每一個系統(tǒng)調(diào)用 |
-t | 在輸出中的每一行前加上時間信息 |
參考實例
通用的完整用法,跟蹤28979進(jìn)程的所有系統(tǒng)調(diào)用(-e trace=all),并統(tǒng)計系統(tǒng)調(diào)用的花費時間,以及開始時間(并以可視化的時分秒格式顯示),最后將記錄結(jié)果存在output.txt文件里面:
[root@linuxcool ~]# strace -o output.txt -T -tt -e trace=all -p 28979
同時跟蹤fork和vfork出來的進(jìn)程,把所有strace輸出寫到~/dcop-strace.txt里面, 啟動調(diào)試dcopserver:
[root@linuxcool ~]# strace -f -F -o ~/dcop-strace.txt dcopserver
設(shè)置返回值的輸出位置.默認(rèn)為40:
[root@linuxcool ~]# strace -a column
跟蹤 whoami時的輸出:
[root@linuxcool ~]# strace -o whoami-strace.txt whoami
限制strace只跟蹤特定的系統(tǒng)調(diào)用:
[root@linuxcool ~]# strace -f -o configure-strace.txt -e execve ./configure
以上是使用linux的strace命令跟蹤系統(tǒng)調(diào)用的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。