理解这个 strace 输出

Gre*_*hal 2 linux java strace tomcat

任何人都可以理解这个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
Run Code Online (Sandbox Code Playgroud)

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

Gil*_*il' 6

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

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