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