5

どちらのメソッドも、システムコールとパラメーターおよびそれらの戻り値を収集するために使用されます。私たちが好むときLD_PRELOADとその理由は?たぶん、私たちは経由でのみシステムコールを収集できると言うことができますが、トリックstraceでライブラリコールを収集することができます。LD_PRELOADただし、名前が。であるライブラリ用の別のトレーサーがありltraceます。

4

1 に答える 1

6

straceptrace(2) syscallを使用しているPTRACE_SYSCALLため (おそらく)、すべてのシステム コールをキャッチします (によってインストールされたカーネル フックを介してptrace)。静的にリンクされた実行可能ファイル、またはディストリビューションの GNU Glibc 以外のものを使用する実行可能ファイル (例: musl-libc、または の古いバージョンのようなアセンブリで記述されたユーティリティbusybox) で動作します。

LD_PRELOADトリックは動的ローダーeg/lib64/ld-linux-x86-64.so.2または/lib/ld.sold.so(8) manページを参照)などを使用します...したがって、静的にリンクされた実行可能ファイル(または動的ローダーとGNU libc以外のものを使用するもの)では機能しません。

ltraceおそらくptraceベースにもなっています。

これらはすべてフリー ソフトウェアなので、ソース コードを調べて (さらに改良して) ください。

于 2012-12-13T19:01:48.830 に答える