strace
跳转到导航
跳转到搜索
用法
-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]
参见
外部链接
- 5 simple ways to troubleshoot using Strace
- 手把手教你用Strace诊断问题 | 火丁笔记
- What problems do people solve with strace?