strace只關心程序與系統之間產生的交互,於是strace不適用於程序邏輯代碼的排錯和分析。網絡
strace的最簡單的用法就是執行一個指定的命令,在指定的命令結束以後它也就退出了。在命令執行的過程當中,strace會記錄和解析命令進程的全部系統調用以及這個進程所接收到的全部的信號值。
strace經常使用來跟蹤進程執行時的系統調用和所接收的信號。 在Linux世界,進程不能直接訪問硬件設備,當進程須要訪問硬件設備(好比讀取磁盤文件,接收網絡數據等等)時,必須由用戶態模式切換至內核態模式,通 過系統調用訪問硬件設備。strace能夠跟蹤到一個進程產生的系統調用,包括參數,返回值,執行消耗的時間。函數
每一行都是一條系統調用,等號左邊是系統調用的函數名及其參數,右邊是該調用的返回值。
strace 顯示這些調用的參數並返回符號形式的值。strace 從內核接收信息,並且不須要以任何特殊的方式來構建內核。code
若是你已經知道你要找什麼,你能夠讓strace只跟蹤一些類型的系統調用。例如,你須要看看在configure腳本里面執行的程序,你須要監視的系統調 用就是execve。讓strace只記錄execve的調用用這個命令:blog
strace -f -o configure-strace.txt -e execve ./configure