首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C-位操作的困难

问C-位操作的困难
EN

Stack Overflow用户
提问于 2010-05-04 15:14:59
回答 3查看 737关注 0票数 4

我正在用GDB调试一个程序。

代码语言:javascript
复制
unsigned int example = ~0;

给了我:

代码语言:javascript
复制
(gdb) x/4bt example
0xffd99788:     10101000        10010111        11011001        11111111

为什么这不全是1?我把它定义为~0。然后,下一行代码是:

代码语言:javascript
复制
example>>=(31);

当我尝试检查内存时,GDB会给我这样的信息:

代码语言:javascript
复制
(gdb) x/4bt example
0xffffffff:     Cannot access memory at address 0xffffffff

这是怎么回事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-04 15:24:12

您需要在gdb语句中获取示例的地址:

代码语言:javascript
复制
(gdb) x/4bt &example
票数 8
EN

Stack Overflow用户

发布于 2010-05-04 15:25:20

我认为x命令检查内存,因此example将被解释为指针。试一试

代码语言:javascript
复制
x/4bt &example

或者简单地说

代码语言:javascript
复制
print /x example
票数 5
EN

Stack Overflow用户

发布于 2010-05-04 15:30:00

我还没有检查gdb命令的格式,但是看一下最后一条语句,您似乎希望看到存储在example中的地址是什么,而不是打印example……似乎example是all 1s (0xffffffff),当您收到错误时,您正在尝试查看内存中的该位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2763478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档