どちらのメソッドも、システムコールとパラメーターおよびそれらの戻り値を収集するために使用されます。私たちが好むときLD_PRELOADとその理由は?たぶん、私たちは経由でのみシステムコールを収集できると言うことができますが、トリックstraceでライブラリコールを収集することができます。LD_PRELOADただし、名前が。であるライブラリ用の別のトレーサーがありltraceます。
1667 次
1 に答える
6
straceはptrace(2) syscallを使用しているPTRACE_SYSCALLため (おそらく)、すべてのシステム コールをキャッチします (によってインストールされたカーネル フックを介してptrace)。静的にリンクされた実行可能ファイル、またはディストリビューションの GNU Glibc 以外のものを使用する実行可能ファイル (例: musl-libc、または の古いバージョンのようなアセンブリで記述されたユーティリティbusybox) で動作します。
LD_PRELOADトリックは動的ローダーeg/lib64/ld-linux-x86-64.so.2または/lib/ld.so(ld.so(8) manページを参照)などを使用します...したがって、静的にリンクされた実行可能ファイル(または動的ローダーとGNU libc以外のものを使用するもの)では機能しません。
ltraceおそらくptraceベースにもなっています。
これらはすべてフリー ソフトウェアなので、ソース コードを調べて (さらに改良して) ください。
于 2012-12-13T19:01:48.830 に答える