strace命令基本用法
阿新 • • 發佈:2020-07-12
簡介
strace是一個可用於診斷、除錯和教學的Linux使用者空間跟蹤器。我們用它來監控使用者空間程序和核心的互動,比如系統呼叫、訊號傳遞、程序狀態變更等
strace的兩種執行模式
1、直接追蹤某些命令的執行
語法
strace <待追蹤的命令>
例如
[root@iZzm446eh1ux98Z ~]# strace ls /
2、追蹤某個守護程序
語法
strace -p pid
strace常用選項
從例項中看:
strace-tt-T-v-f-etrace=file-o/data/log/strace.log-s1024-p23489
-tt 在每行輸出的前面,顯示毫秒級別的時間-T 顯示每次系統呼叫所花費的時間 -v 對於某些相關呼叫,把完整的環境變數,檔案stat結構等打出來。 -f 跟蹤目標程序,以及目標程序建立的所有子程序 -e 控制要跟蹤的事件和跟蹤行為,比如指定要跟蹤的系統呼叫名稱 -o 把strace的輸出單獨寫到指定的檔案 -s 當系統呼叫的某個引數是字串時,最多輸出指定長度的內容,預設是32個位元組 -p 指定要跟蹤的程序pid, 要同時跟蹤多個pid, 重複多次-p選項即可。
strace的-e trace選項
要跟蹤某個具體的系統呼叫,-e trace=xxx即可。但有時候我們要跟蹤一類系統呼叫,比如所有和檔名有關的呼叫、所有和記憶體分配有關的呼叫。strace提供了幾類常用的系統呼叫組合名字。
-e trace=file 跟蹤和檔案訪問相關的呼叫(引數中有檔名) -e trace=process 和程序管理相關的呼叫,比如fork/exec/exit_group -e trace=network 和網路通訊相關的呼叫,比如socket/sendto/connect -e trace=signal 訊號傳送和處理相關,比如kill/sigaction -e trace=desc 和檔案描述符相關,比如write/read/select/epoll等 -e trace=ipc 程序見同學相關,比如shmget等