首页 > 解决方案 > GDB - 设置没有类型的变量

问题描述

我想设置变量并比较它们(if $var1 == $var2

set $var1 = myvar.x
set $var2 = myvar.y

的类型与$var1的类型不同var2。(我的二进制文件是用 ICC 编译的——英特尔大端编译器)

var1- (struct demo * __be)
var2 -(__be struct demo *)

现在,如果我比较$var1$var2我会发现它不同,尽管值相同。

铸造也不起作用:

set $var2 = (struct demo *) (myvar.y)
(gdb) p $var2
$22 = (struct demo * __be) 0xabcdef
(the __be still exist)

我怎么能忽略类型?

标签: cgdb

解决方案


假设__be是某种自定义快捷方式__attribute__((bigendian)),并且本机架构是小端,那么var1是一个结构(包含小端值)指针,其指针值存储为大端,而var2结构(包含大端值)指针其指针值存储为小端。

我认为没有办法直接比较它们。您必须首先将它们的值转换为相同的字节序。


推荐阅读