一、概述
strace常用来跟踪进行执行时的系统调用和所接收的信号。
二、参数
-p |
跟踪指定的进程 |
-o filename |
默认strace 将结果输出到stdout。通过-o 可以将输出写入到filename 文件中。 |
-ff |
常与-o 选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID 文件。 |
-r |
打印每一个系统调用的相对时间。 |
-t |
在输出中的每一行前加上时间信息。-tt 时间确定到微秒级。还可以使用-ttt 打印相对时间。 |
-v |
输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出。 |
-s |
指定每一行输出字符串的长度,默认是32。 |
-c |
统计每种系统调用所执行的时间,调用次数,出错次数。 |
-d |
输出strace 关于标准错误的调试信息。 |
-i |
输出系统调用的入口指针。 |
-T |
显示每一调用所耗的时间。 |
-x |
以十六进制形式输出非标准字符串。 |
-xx |
所有字符串以十六进制形式输出。 |
-e expr |
- 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]
- qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行历史记录里的命令,所以要使用\\.
- -e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all
- -e trace=file 只跟踪有关文件操作的系统调用
- -e trace=process 只跟踪有关进程控制的系统调用
- -e trace=network 跟踪与网络有关的所有系统调用
- -e strace=signal 跟踪所有与系统信号有关的 系统调用
- -e trace=ipc 跟踪所有与进程通讯有关的系统调用
- -e abbrev=set 设定strace输出的系统调用的结果集。-v 等与 abbrev=none.默认为abbrev=all
- -e raw=set 将指定的系统调用的参数以十六进制显示
- -e signal=set 指定跟踪的系统信号.默认为all。如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号
- -e read=set 输出从指定文件中读出 的数据。例如: -e read=3,5
- -e write=set 输出写入到指定文件中的数据
|