用 `strace -p` 附加到正在运行的进程
程序卡住或出现神秘报错时,`strace -p PID` 能实时显示它正在发起的系统调用——工具人人知道,参数却总记不住。
运行 `sudo strace -p 1234` 附加到 PID 1234 实时观察其系统调用,按 Ctrl+C 分离且不会杀掉进程。
01命令
命令
$ sudo strace -p 1234 -e trace=openat,read,write02作用说明
不加过滤的输出刷屏太快,建议与 `-p` 搭配使用:`-e trace=file`(文件相关调用)、`-e trace=network`(套接字)或逗号分隔的具体调用名。最容易被忘的分析参数是 `-c`:`strace -c -p 1234` 运行一段时间后按调用统计次数和耗时——借此可以发现进程正在成千上万次地调用 stat()。进程会派生线程或子进程时加 `-f`,长字符串被截断时加 `-s 200`。
03风险
!注意: 被跟踪的进程在附加期间会明显变慢——不要对延迟敏感的生产进程使用 strace。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- strace(1) — trace system calls and signals依据: Documents -p PID attach mode, -e trace= filter expressions, -c summary counting, and -f for following forks
最后验证: 2026-09-17 · 分类: 开发者