snippet.txt
-f:需要跟踪fork出来的进程。
 
-F:需要跟踪vfork出来的进程。
 
-o:跟踪结果输出到指定文件。
 
-ff:常与-o一起使用,不同进程(子进程)产生的系统调用输出到file.PID文件。
 
-r:打印每个系统调用的相对时间。
 
-t:输出的每一行前加上时间信息,-tt精确到微秒的绝对时间。-ttt打印相对时间。
 
-v:强制输出所有系统调用,默认设置一些频繁的系统调用不会被输出。
 
-s:指定每行输出长度,默认32。文件名不受此限制。
 
-c:统计每种系统调用所执行时间、调用次数、出错次数。
 
-e:只记录指定的系统系统调用。
 
-T:打印每条系统调用的时长,对于查找时间消耗大调用很有用。
 
-p:附加跟踪指定PID进程。
 
-x:非ascii字符串使用十六进制显示。
 
-xx:所有字符串使用十六进制显示。

例如,

snippet.bash
strace -f -T -o mysql.strace mysql -uroot

跟踪运行mysql -uoot,跟踪fork和vfork的新进程,打印出每条系统调用的时长,跟踪结果输出到mysql.strace文件。

snippet.bash
strace -f -T -o mysql.strace -e fdatasync,fsync -p9788

附加到PID为9788的进程(mysqld进程),只记录fdatasync和fsync系统调用。执行建表命令,日志如下:

img