繁体   English   中英

与gdb奇怪的变量

[英]Strange variables with gdb

我正在使用gdb来调试x86程序集中的程序。 虽然我有一些变量的奇怪行为,但我无法理解为什么。

这就是我定义和查看它们的方式:

section .data
CountDied: dd 0000
OnesFound: db 00

section .text
global _start
_start:
nop
... code

当我逐步运行gdb时,检查变量是否在第一条指令处具有正确的值,并得到以下结果:

print CountDied
$1=0
print OnesFound
$2=167772672

虽然在下一个说明中,OnesFound似乎表现得很正确。 我真的很困惑。 谢谢你的建议。

程序集“variable”只是内存中特定点的标签。 GDB不知道应该有多大,它只是假设它是一个32位的值。

您获得的数字的十六进制表示为0x0A000200。 x86是一个小端平台,因此它实际上将作为00 02 00 0A存储在内存中。 只有第一个字节实际上是您设置的值的一部分,并且设置正确。

您可以使用命令x/b &OnesFound而不是使用print来查看所需的特定字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM