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

我还没有检查 gdb 命令格式,但是查看最后一条语句,您似乎想查看存储在地址中的内容example而不是打印example...似乎exampleall 1s( 0xffffffff) 并且您正在尝试查看该位置出现错误时在内存中。

于 2010-05-04T07:30:00.083 回答