当前位置:  开发笔记 > 运维 > 正文

为什么gdb告诉我x86-64上的指针是4个字节?

如何解决《为什么gdb告诉我x86-64上的指针是4个字节?》经验,为你挑选了1个好方法。

在openSUSE,CentOS,Fedora和Ubuntu上看到gdb:

这个gdb配置为"x86_64-unknown-linux-gnu".

(gdb)p sizeof(void*)

1美元= 4美元

(gdb)p sizeof(长)

2美元= 4美元

为什么gdb在我的所有64位系统上都给出了错误的答案?



1> hobbs..:

当您没有调试任何特定代码时, gdb似乎会选择一些令人惊讶的默认值.如果您加载64位可执行文件,gdb /bin/sh则会得到一个不太令人惊讶的结果:

(gdb) p sizeof(void *)
$1 = 8

你还可以专门告诉gdb做什么:

(gdb) show architecture
The target architecture is set automatically (currently i386)
(gdb) p sizeof(void *)
$1 = 4
(gdb) set architecture
Requires an argument. Valid arguments are i386, i386:x86-64, i8086, i386:intel, i386:x86-64:intel, auto.
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) p sizeof(void *)
$2 = 8


惊人.架构默认为i386.我会报告这是一个错误......
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有