【发布时间】:2012-10-15 15:36:51
【问题描述】:
1) 首先我想知道,如何解码这些变量?
我知道这个问题的解决方案,删除优化标志,让它不稳定,我不想做所有这些。是否有任何解决方案可以在不重新编译源代码的情况下完成?问题是每当我进行任何更改时,编译都需要很长时间,所以我不想使用不同的优化标志来编译它,我也尝试过一次更改优化标志,但它只是因为编译标志的变化而崩溃,原因我想不通。
当我执行“info reg”时,我也无法找到有关理解各种寄存器的文档。我期待一些变量(我知道它的值,它会是什么)但是 info reg 向我展示了所有不同的值。我在这里遗漏了一些东西。我正在研究的架构是 x86_64
2) 我想知道 gdb 在解码此类寄存器变量时面临哪些限制?或者这个问题已经有人解决了。我在很多地方读过汇编代码,您可以找出该寄存器中的变量。如果那是真的,为什么它不能被构建到 gdb 中。如果有解决此问题的方法,请指向相关页面
【问题讨论】:
-
这里唯一能解决问题的是“我想知道有什么限制”和“请指向相关页面”。你还没有描述一个问题,这些都是非常模糊和开放式的问题,实际上并不能解决问题。其他人可能不同意,但我投票结束。
-
对不起,我不明白。我的基本问题是如何找出这样一个被优化的变量的值。我知道这个问题的解决方案,删除优化标志,让它不稳定,我不想做所有这些。是否有任何解决方案可以在不重新编译源代码的情况下完成?您可以假设该库是我无权访问的第 3 方代码。我还应该描述什么。那么gdb肯定会面临一些问题,因为它无法显示这些变量。这就是我所说的“限制”。
-
您的评论与您的原始帖子相差数英里。在您的评论中,您问“我如何找出这样一个被优化的变量的值?”。 (这是一个真正的问题,不像你原来的帖子)。您还描述了您在原始帖子中忽略的限制(“库是我无权访问的第 3 方代码”“有没有可以在不再次编译源代码的情况下完成的解决方案?”)。我建议您编辑您的问题以包含此信息。
-
是的,我同意。更新了我的问题。
标签: c debugging compiler-construction gdb compiler-optimization