配置 gdb 以调试浮点计算

问题描述

我在做什么:我正在用 C 编写一个程序,该程序对汇编程序进行外部调用。我使用 SSE 指令,最初只想使用 xmm 寄存器。为了有效地调试程序,我必须密切关注浮点计算,而我在 gdb 中遇到了问题。

我的设置是什么: 在 gdb 中为程序集调用设置断点后,我运行程序。在 gdb 中,我启动 tui 并按如下方式设置布局:

layout regs
focus regs
tui reg all

这允许我跟踪所有寄存器和汇编代码。

我的问题是什么:

  1. 关于ymm寄存器的信息在屏幕的末尾被截断:

    enter image description here

    我无法查看全部信息。我已经搜索了文档,但没有找到任何指示 gdb 在一定数量的字符后在寄存器组窗口中换行的指令。有没有办法强制换行?

  2. 在这个特定的程序中,我将一个 float-0.2 传递给汇编函数。根据调用约定,该值应存储在 xmm0 中。使用 p $xmm0p $ymm0,我可以在命令行中查看这些寄存器:

    enter image description here

    在这一点上,我希望在 xmm0 寄存器的最低部分看到 -0.2,但实际上打印时好像它在寄存器的最高部分。为什么会这样?

  3. 正如您在这两张图片中看到的,注册窗口显示我的 ymm0 注册是空的,但是用 p $ymm0 打印它显示它有 {{1 }} 在它的一部分。为什么这些显示的值不同?

结果:我无法调试浮点计算。您对如何配置 gdb 以跟踪这些计算有什么建议吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...