我正在使用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
发生了什么事?
答案 0 :(得分:8)
您需要在gdb语句中获取示例的地址:
(gdb) x/4bt &example
答案 1 :(得分:5)
我认为x
命令检查内存,因此example
将被解释为指针。尝试
x/4bt &example
或只是
print /x example
答案 2 :(得分:0)
我没有检查gdb命令格式,但查看最后一条语句,您似乎想要查看example
中存储的地址而不是打印example
......似乎example
为all 1s
(0xffffffff
)并且当您收到错误时,您正试图在内存中查看该位置。