1

私は、トレース ライブラリ用の Mac ランチャーに取り組んでいます。トレースは、ライブラリをDYLD_INSERT_LIBRARIES(Mac に相当するLD_PRELOAD) に追加することで機能します。DYLD_INSERT_LIBRARIESその後、さらにプロセスが生成されると、変数はトレース ライブラリによって伝播されます。

問題は、32 ビット tracee プロセスには 32 ビット バージョンのトレース ライブラリを使用し、64 ビット tracee プロセスには 64 ビット バージョンを使用する必要があることです。私が持っている Linux ランチャーでは、これは in を使用すること${LIB}で実現されます。LD_PRELOAD動的ローダー ( ld.so) は、プロセスをロードするときにこれを「正しいもの」に置き換えます。

Macld.soの の${LIB}変数に相当するものはありますか? マニュアル ページ ( https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/dyld.1.html )dyldを調べたときに、すぐには表示されませんでしたが、読み間違うだけ。そうでない場合、同じ効果を達成する別の方法はありますか?

4

1 に答える 1

2

あなたが望むのは、挿入したライブラリをファット バイナリとしてコンパイルすることだと思います (たとえば、同じバイナリ内の複数のアーキテクチャ)。DYLD_INSERT_LIBRARIESこれにより、さまざまなアーキテクチャのサブプロセスに対して単一の値が機能するようになります。

于 2013-02-27T08:05:00.453 に答える