如何在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
相关产品推荐
相关产品推荐

