4

GDB でプログラムをデバッグしています。

unsigned int example = ~0;

私に与えます:

(gdb) x/4bt example
0xffd99788:     10101000        10010111        11011001        11111111

なぜこれはすべて 1 ではないのですか? 私はそれを ~0... と定義し、次のコード行は次のとおりです。

example>>=(31);

そして、メモリをビットで調べようとすると、GDBはこれを私に与えます:

(gdb) x/4bt example
0xffffffff:     Cannot access memory at address 0xffffffff

何が起こっている???

4

3 に答える 3

8

gdb ステートメントで example のアドレスを取得する必要があります。

(gdb) x/4bt &example
于 2010-05-04T07:24:12.093 に答える
5

xコマンドはメモリを調べるのでexample、ポインタとして解釈されると思います。試す

x/4bt &example

または単に

print /x example
于 2010-05-04T07:25:19.627 に答える
0

example私は gdb コマンドのフォーマットをチェックしていませんが、最後のステートメントを見ると、印刷する代わりに格納されているアドレスにあるものを確認したいようですexample...それexampleall 1s( 0xffffffff) であり、その場所を見ようとしているようですエラーが発生したときのメモリ内。

于 2010-05-04T07:30:00.083 に答える