Linux

理解這個 strace 輸出

  • July 9, 2014

任何人都可以理解這個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 系統。它試圖讀取一些東西,但它不是文件名,而是這個奇怪的字元串。這是我認為應用程序失敗的地方,這是我不理解的部分。

read系統呼叫從打開的文件中讀取一些字節。“奇數字元串”是呼叫讀取的字節。此呼叫嘗試從文件描述符 34 讀取 32 個字節(第三個參數)並成功(返回值)。

要找出您的應用程序正在讀取的文件是什麼,請在跟踪中查看打開此文件描述符的系統呼叫。這可能是open(返回值)、pipe(第一個參數)、socket(返回值)或其他一些。文件描述符也可能由dupordup2或返回dup3,在這種情況下,您需要追溯被複製的文件描述符。如果程序仍在執行,您還可以執行lsof -p 25302以查看在執行命令時該程序打開了哪些文件。lsof

引用自:https://unix.stackexchange.com/questions/141441