strace 是一個強大的 Linux 命令行工具,用于跟蹤程序執行過程中的系統調用和信號。以下是如何使用 strace 命令來跟蹤系統調用的基本步驟:
在大多數 Linux 發行版中,strace 已經預裝。如果沒有安裝,可以使用包管理器進行安裝。例如,在基于 Debian 的系統上,可以使用以下命令安裝:
sudo apt-get update
sudo apt-get install strace
跟蹤單個程序的系統調用:
strace ls -l
這條命令會跟蹤 ls -l 命令執行過程中的所有系統調用。
跟蹤特定進程的系統調用:
如果你想跟蹤一個已經在運行的進程,可以使用 -p 選項:
strace -p <PID>
其中 <PID> 是你要跟蹤的進程的進程 ID。
跟蹤多個進程的系統調用: 你可以同時跟蹤多個進程:
strace -p <PID1> <PID2> ...
跟蹤子進程的系統調用:
使用 -f 選項可以跟蹤由目標進程創建的所有子進程的系統調用:
strace -f ls -l
跟蹤標準輸入、輸出和錯誤:
使用 -e trace=write,read 選項可以只跟蹤寫和讀的系統調用:
strace -e trace=write,read ls -l
限制跟蹤的系統調用數量:
使用 -c 選項可以在程序結束時輸出統計信息,顯示每個系統調用的次數和時間:
strace -c ls -l
跟蹤特定的系統調用:
使用 -e 選項可以指定要跟蹤的系統調用:
strace -e trace=open,close ls -l
將輸出保存到文件:
使用 -o 選項可以將輸出保存到文件中:
strace -o output.txt ls -l
假設你想跟蹤 ping 命令的系統調用,并且只想看到與網絡相關的系統調用,可以使用以下命令:
strace -e trace=network ping google.com
strace 會產生大量的輸出,特別是在跟蹤復雜程序或長時間運行的進程時。確保你有足夠的磁盤空間來存儲輸出文件。通過這些基本用法,你可以有效地使用 strace 來調試和分析程序的系統調用行為。