3

静的変数はどこに保存されていますか (データセグメントまたはヒープまたは BSS)と少し似ています。、しかし、同じものではありません。

ここで、0x10fb90 のような他のプロセスの変数のアドレスを取得します。この変数はどこに保存されていますか (データ セグメント、ヒープ、または BSS)、プロセスの pid と変数のアドレスだけから場所を取得できますか?

obj-c と c を使用して osx に取り組んでいます。

4

1 に答える 1

2

2 つのオプションがあります。

1.使用objdump

何かのようなもの

objdump -x a.out | grep YOUR_VARIABLE_ADDRESS

2. gcc のマップ オプションを使用してマップ ファイルを生成する

このようなものをgccでコンパイルします

$ gcc -o foo.exe -Wl,-Map,foo.map foo.c

そしていま

$ grep YOUR_VARIABLE_ADDRESS foo.map

これらのメソッドはどちらも、指定したアドレスが存在しない場合、変数の場所を表示します。

PS : に追加したリンクはmap file、Visual Studio リンカーによって生成されたマップ ファイルの例を示していますが、形式は通常、さまざまなリンカーによって生成されたマップ ファイル形式のほとんどで類似しています。

于 2012-04-16T08:59:01.447 に答える