理解这个 strace 输出

理解这个 strace 输出

任何人都可以理解这个strace输出吗?

[pid 25302] read(34, "}B\311\204\n\250\347$\220\266kRb\304a^^\2504\303k\235\227T\223\16\231\306\277\254\256\306", 32) = 32

它来自通过 Tomcat 运行 Java 应用程序的 Linux 系统。它试图读取某些内容,但它不是文件名,而是这个奇怪的字符串。我认为这是应用程序失败的地方,也是我不理解的部分。

答案1

read系统调用从打开的文件中读取一些字节。 “奇数字符串”是调用读取的字节。此调用尝试从文件描述符 34 读取 32 个字节(第三个参数),并成功(返回值)。

要找出您的应用程序正在读取哪个文件,请回顾打开此文件描述符的系统调用的跟踪。这可能是open(返回值),pipe(第一个参数),socket(返回值)或其他一些。文件描述符也可能已返回dup或者dup2或者dup3,在这种情况下,您需要追溯重复的文件描述符。如果该进程仍在运行,您还可以运行命令lsof -p 25302来查看该进程在运行该命令时打开了哪些文件。lsof

相关内容