c - 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)
我怎么能忽略类型?
解决方案
假设__be
是某种自定义快捷方式__attribute__((bigendian))
,并且本机架构是小端,那么var1
是一个结构(包含小端值)指针,其指针值存储为大端,而var2
结构(包含大端值)指针其指针值存储为小端。
我认为没有办法直接比较它们。您必须首先将它们的值转换为相同的字节序。
推荐阅读
- go - 为什么不“go get”将包安装到 GOPATH?
- python - 在列中复制具有 NaN 值的 DataFrame
- amazon-web-services - 如何仅允许单个 IP 地址访问在 AWS EC2 上的浏览器中运行的 Jupyter Notebook?
- c# - 从 Outlook 删除邮件时操作中止(HRESULT 异常:0x80004004 (E_ABORT))
- google-apps-script - Google 表格:更改颜色/突出显示活动的电子表格标签
- c# - 如何让 BOT 发起对话
- windows - windows bat文件中for循环后如何让代码继续运行?
- php - 试图合并两个 csv 文件,但它只显示前两行
- haskell - 对于新定义的效用函数是否应该是部分的,是否存在共识?
- mysql - MySQL 服务器每秒只向我发送 300 行