天天看點

truss指令

truss 指令

用途

跟蹤程序的系統調用、動态裝入的使用者級函數調用、接收的信号和造成的機器故障。

truss 指令執行指定指令或附加在列出程序辨別上,并産生對系統調用、接收的信号和程序造成的機器故障的跟蹤。每行跟蹤輸出報告 Fault 或 Signal 名稱或 Syscall 名稱和參數及傳回值。系統庫定義的子例程對于核心的嚴格系統調用并不是必要的。truss 指令不報告這些子例程,而是報告子例程的基本系統調用。可能的話,系統調用參數使用有關系統頭檔案定義符号顯示。對于路徑名指針參數,truss 顯示指向的字元串。未定義的系統調用預設顯示系統名稱、所有八個可能的變量及十六進制格式的傳回值。

當 -o 标志和 truss 一起使用,或标準錯誤改指向非終端檔案時,truss 忽略挂斷、中斷和信号程序。他促進跟蹤互動式程式從終端獲得 interrupt 和 quit 信号。

若跟蹤輸出保持指向終端或跟蹤現存過程(使用 -p 标志),truss 對 hangup、interrupt 和 quit 信号做出反應,釋放所有跟蹤程序并退出。他使使用者可終止過多的跟蹤輸出并釋放前現存程序。釋放程序繼續到功能恢複正常。

示例

1. 在終端上跟蹤 find 指令,輸入:

truss find . -print >find.out

2. 跟蹤 lseek、close、statx 和開放系統調用,輸入:

truss -t lseek,close,statx,open find . -print > find.out

3. 顯示 find 指令的線程辨別和正常輸出,輸入:

truss -l find . -print >find.out

4. 顯示 find 指令的時間戳記和正常輸出,輸入:

truss -d find . -print >find.out

5. 顯示 find 指令的增量時間和正常輸出,輸入:

truss -D find . -print >find.out

6. 運作 ls 指令時,在 libc.a 庫中跟蹤 malloc() 函數調用及除去 strlen() 函數調用,輸入:

truss -u libc.a::malloc,!strlen ls

7. 運作 ls 指令時,跟蹤 libc.a 庫中名稱以“m”開頭的所有函數調用,輸入:

truss -u libc.a::m*,!strlen ls

8. 運作可執行 foo 時,跟蹤來自 libcurses.a 庫的所有函數調用及除去來自 libc.a 的調用,輸入:

truss -u libcurses.a,!libc.a::* foo

9. 運作可執行 foo 時,跟蹤來自 libcurses.a 的 refresh() 函數調用和來自 libc.a 的 malloc() 函數調用,輸

入:

truss -u libc.a::malloc -u libcurses.a::refresh foo

原文

http://hi.baidu.com/lmcbbat/item/1e1022e4780af00b8c3ea868

上一篇: pfiles指令