在調試的時候,strace能幫助你追蹤到一個程序所執行的系統調用。當你想知道程序和操作系統如何交互的時候,這是極其方便的,比如你想知道執行了哪些系統調用,並且以何種順序執行。
這個簡單而又強大的工具幾乎在所有的Linux操作系統上可用,並且可被用來調試大量的程序。
讓我們看看strace命令如何追蹤一個程序的執行情況。
最簡單的形式,strace後面可以跟任何命令。它將列出許許多多的系統調用。一開始,我們並不能理解所有的輸出,但是如果你正在尋找一些特殊的東西,那麼你應該能從輸出中發現它。
Linux strace命令詳解 http://www.linuxidc.com/Linux/2012-12/75671.htm
Linux strace 跟蹤進程信息 http://www.linuxidc.com/Linux/2012-10/72432.htm
Linux下重量級命令strace使用介紹 http://www.linuxidc.com/Linux/2012-10/71823.htm
Linux strace解決段錯誤 http://www.linuxidc.com/Linux/2011-08/41308.htm
Linux進程控制--strace:追蹤信號和系統調用 http://www.linuxidc.com/Linux/2011-05/35823.htm
Linux中程序執行的流程分析工具——strace http://www.linuxidc.com/Linux/2013-11/93023.htm
讓我們來看看簡單命令ls的系統調用跟蹤情況。
這是strace命令輸出的前幾行。其他輸出被截去了。
上面的輸出部分展示了write系統調用,它把當前目錄的列表輸出到標准輸出。
下面的圖片展示了使用ls命令列出的目錄內容(沒有使用strace)。
Strace 的用法之一(除了調試某些問題以外)是你能找到被一個程序讀取的配置文件。例如,
strace命令的-e選項僅僅被用來展示特定的系統調用(例如,open,write等等)
讓我們跟蹤一下cat命令的‘open’系統調用。
strace不但能用在命令上,而且通過使用-p選項能用在運行的進程上。
它包括系統調用的概要,執行時間,錯誤等等。使用-c選項能夠以一種整潔的方式展示:
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-10/107453p2.htm