我正在尝试调试崩溃转储,我想检查堆栈上某些变量的值。问题是在发布版本中已经内联了一些方法,但我想转储它的变量(dv)。
如果我转到堆栈框架并执行dv命令,它会显示该特定函数的所有变量,但不会显示内联调用中的变量。
我可以执行一个uf(不可解释的函数)命令来查看汇编代码,但是它有很多工作可以解决问题。
答案 0 :(得分:4)
在优化版本中通常不可能。 优化器可能决定不为变量分配内存,因此研究汇编代码以确定哪个寄存器是变量是唯一的方法。 此外,如果“Omit frame pointers”开关打开,调试器将无法正确显示堆栈上分配的任何变量。
您可以尝试添加代码以将您感兴趣的变量记录到文件中。
答案 1 :(得分:1)
不幸的是,你必须通过反汇编来解决这个问题。如果你对这一点感到不舒服,那么开始练习是一个很好的时间,这是调试棘手问题的宝贵技能。
此外,虽然它现在对您没有帮助,但Visual Studio 2012生成的PDB文件格式现在可以更好地跟踪内联函数。因此,在未来,在大多数情况下应该减轻这种特殊情况。您可以在此处详细了解该功能: