strace

来自百合仙子's Wiki
跳转到导航 跳转到搜索

用法

-f
也 trace 子进程
-p
指定 PID
-s strsize
显示的字符串最大长度,默认为 32
-t
记录时间。给定一次,精确到秒;两次,精确到微秒;三次,使用 UNIX 时间戳
-v
显示完整的环境变量、结构体等

技巧

跟踪多进程程序:

strace -ttt -s 1024 -f -o strace.log $(pgrep nginx | sed 's/^/-p /g')

搜索

Vim 中搜索文件描述符:

\v<%(close|read|write|fstat|connect|lseek|sendto|recvfrom|epoll_%(ctl|wait)|[gs]etsockopt)\(\zs\d+|<%(open|socket|epoll_create1)\(.* = \zs\d+|<%(pipe2\(\[)@<=\d+, \d+

Android

Android 平台的 strace 使用其自身的 NDK 工具链编译会有大量头文件/宏定义/结构体成员未定义的提示。使用 dyne 的工具链编译(静态链接)成功。[1]

参见

  • ltrace
  • strace-graph,读取 strace 日志来显示进程关系的 Perl 脚本
  • dstruss, Mac OS X 上最接近 strace 的工具

外部链接

参考资料