«nm» は VMA が 0 で示されます。シンボルはどこにマッピングされますか?

«nm» は VMA が 0 で示されます。シンボルはどこにマッピングされますか?

「nm」でコンパイルされたアプリケーションの機能を見ています。 "send()" 関数のブレークポイントを設定するには、アドレスを探す必要があります。問題は、この関数がVMAが0の「nm」の出力に対応し、そのアドレスが「A」タグに示されているように将来変更されないことです。

00000000 A _send@16

気になりました。これはどういう意味ですか?遺言は実際にどこにマッピングされていますかsend()?便利な注意事項:バイナリはMinGWでコンパイルされたPEアプリケーションです。

ベストアンサー1

アップデートが必要な場合はこれを確認してください。アドレス0の関数は、その関数が定義されている元のオブジェクトファイルのアドレス0になければなりません。私が使っているライブラリには別のファイルに多くの関数が定義されており、多くの重要な関数のアドレスが0x0のようです。コマンドラインに追加すると、-o各シンボルの元のターゲットファイル名を読み取る必要があります。

https://stackoverflow.com/questions/1863613/what-does-symbol-value-from-nm-command-mean

おすすめ記事