このトレース出力について

このトレース出力について

誰でもこの出力を理解できますか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(3番目のパラメーター)から32バイトの読み取りを試み、成功します(戻り値)。

アプリケーションがどのファイルを読み取っているかを知るには、このファイル記述子を開いたシステム呼び出しのトレースを確認してください。これはおそらくopen(戻り値),pipe(最初のパラメータ)、socket(戻り値)またはその他.ファイル記述子が返された可能性があります。dupまたはdup2またはdup3、この場合、重複したファイル記述子を再追跡する必要があります。プロセスがまだ実行されている場合は、コマンドを実行して、コマンドが実行lsof -p 25302されたときにプロセスがどのファイルを開いたかを確認することもできます。lsof

おすすめ記事