7

バイナリがLinuxでソケット処理を使用しているepollかどうかを確認する必要があります。selectバイナリは削除されませんが、Linuxボックスで実行できないため、実行できませんstrace

4

1 に答える 1

10

nm <binary>どのシンボルが定義されているか、そしてさらに重要なことに、ここでは、どのシンボルが特定のバイナリによって使用されているかがわかります。poll出力にリストされている、またはリストされているものを確認することで、控えめな推測を得ることができselectます。

アプリケーションが両方に対してリンクされていることに気付くかもしれません。その場合、どちらを呼び出すかを実行時に決定している可能性があり、実行した場合に実際にどちらを使用するかを簡単に判断することはできません。

nmバイナリの構築方法によっては、-Dフラグを使用して実行する必要がある場合があります。または、を指定しないようにする必要がある場合があります-D。両方の方法を試してください。

プログラムが共有ライブラリを使用している場合、使用しているライブラリへの実際の呼び出し、pollまたはselectそのライブラリ内にある可能性があります。その場合、それぞれで実行されているすべてのライブラリを調べなければならない場合がnmあります。の出力でエントリを探すことにより、プログラムが使用するライブラリを見つけることができます。lddそれが機能しない場合もあります。NEEDEDreadelf --dynamic

バイナリが現在実行しているものとは異なるプラットフォーム用にビルドされている場合は機能しlddません。また、のクロスコンパイラビルドを使用してbinutils、そのバージョンを使用する必要がある場合がありnmます。

于 2012-11-08T00:41:36.067 に答える