用 `strace -p` 附加到正在运行的进程

程序卡住或出现神秘报错时,`strace -p PID` 能实时显示它正在发起的系统调用——工具人人知道,参数却总记不住。

Linuxstrace 系统调用追踪调试性能系统调用中风险
运行 `sudo strace -p 1234` 附加到 PID 1234 实时观察其系统调用,按 Ctrl+C 分离且不会杀掉进程。

01命令

命令
$ sudo strace -p 1234 -e trace=openat,read,write

02作用说明

不加过滤的输出刷屏太快,建议与 `-p` 搭配使用:`-e trace=file`(文件相关调用)、`-e trace=network`(套接字)或逗号分隔的具体调用名。最容易被忘的分析参数是 `-c`:`strace -c -p 1234` 运行一段时间后按调用统计次数和耗时——借此可以发现进程正在成千上万次地调用 stat()。进程会派生线程或子进程时加 `-f`,长字符串被截断时加 `-s 200`。

03风险

风险中风险
使用条件Requires strace (apt install strace / dnf install strace) and ptrace permission (root or same-UID process; kernel.yama.ptrace_scope may apply)
!注意: 被跟踪的进程在附加期间会明显变慢——不要对延迟敏感的生产进程使用 strace。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

最后验证: 2026-09-17 · 分类: 开发者

06相关方案