You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在strace的恢复系统调用中显示文件描述符信息?

问题:让strace恢复的系统调用显示文件描述符详细信息

我当前使用的strace命令是:

sudo strace --trace=sendto,recvfrom,read,write,ipc -yy -s 10000 -fp $pid 2>&1

其中$pid是目标进程ID。

输出里,未完成的系统调用会显示文件描述符的详细信息,比如:

[pid  4427] recvfrom(82<UNIX:[2715572>2716112,"/home/learn/my_socket"]>,  <unfinished...>

但恢复后的系统调用却丢失了这部分信息,示例如下:

[pid  4427] <... recvfrom resumed>"\0\20{\"isAlive\":true}", 8192, 0, NULL, NULL) = 18

我希望恢复后的系统调用也能显示类似82<UNIX:[2715572>2716112,"/home/learn/my_socket"]>的文件描述符信息,该如何实现?


解决方案

在原strace命令中添加--show-fds=all选项(若你的strace版本较旧,可替换为--decode-fds=all),就能让恢复后的系统调用也显示文件描述符的详细信息。

修改后的完整命令:

sudo strace --trace=sendto,recvfrom,read,write,ipc -yy -s 10000 --show-fds=all -fp $pid 2>&1

这个选项会强制strace在所有系统调用输出(包括恢复的调用)中,展示文件描述符关联的完整信息,比如UNIX套接字路径、设备信息等。

内容的提问来源于stack exchange,提问作者Sandeep Acharya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 02:27:08