私が知りたいのは、スタックのデータがどのように変換されるかです。 0x80808080のようなデータを見ることができますが、これはどういう意味ですか?数字のどの部分が違うのか? 「0x」とはどういう意味ですか?
私が知りたい最も重要なのは、データがどのように構成されているかです。プッシュとポップがどのように機能するかを知っていますが、次のことを完全に理解していません。
(gdb) x/300wx 0xbffff155
0xbffff155: 0x80808080 0x80808080
0xbffff355: 0x80808080 0x80808080
各部分はどういう意味ですか? ^ 私はr=4 w=2 x=1 & -=0を知っています
ベストアンサー1
0x
16進数(つまり16進数)で書かれた数値の非常に一般的な接頭辞です。
x
はGDBコマンドメモリの一部を表示します。次の数字と文字は、/
印刷する内容を表します。300単語(w
)、16進数(x
)。その後の数字は印刷を開始するアドレスです。
"r=4 w=2 x=1" は Unix ファイル権限の数字および記号表現に関するものであり、まったく関係がありません。
プロセスメモリの任意の部分を印刷すると、有用なデータは生成されません。デバッグシンボルで書かれたソースコードとバイナリがある場合、デバッガはプログラム内の各変数の保存アドレスを知らせることができます。これはスタックのデータに関する情報を提供しますが、動的に割り当てられたメモリに関する情報は提供しません。ソースコードがない場合は、デバッグよりもはるかに複雑なリバースエンジニアリングを実行します。
これ重要性データの意味、つまり変数のデータが表すのは、コンピュータが言うことができるものではありません。
通常、デバッガが表示するデータを理解するには、プログラミングの経験が必要です。これらのデータの意味は完全にプログラムによって異なり、一般的な考慮事項は含まれません。特定のプログラムとそれがどのようにコンパイルされたかを掘り下げるのではなく、数字の束です。