1. 程式人生 > 實用技巧 >strace命令基本用法

strace命令基本用法

簡介

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等

關於經典網路網絡卡啟動的問題在日記裡