WinDbg 和内联函数
WinDbg and inlined functions
>我正在尝试调试故障转储,我想检查堆栈上某个变量的值。问题是某些方法已在发布版本中内联,但我想转储此变量 (dv)。
如果我转到堆栈帧并执行 dv 命令,它会向我显示该特定函数的所有变量,但不显示内联调用中的变量。
我可以执行 uf(unassmeble 函数)命令来查看汇编代码,但要弄清楚事情需要做很多工作。
这在优化的版本中通常是不可能的。优化程序可能决定不为变量分配内存,因此研究汇编代码以确定变量位于哪个寄存器中是唯一的方法。此外,如果"省略帧指针"开关处于打开状态,调试器将无法正确显示堆栈上分配的任何变量。
您可以尝试将代码添加到文件中,以记录您感兴趣的变量。
不幸的是,你将不得不通过反汇编来解决这个问题。如果您对此还不满意,那么现在是开始练习的好时机,这是调试棘手问题的一项宝贵技能。
此外,虽然它现在对您没有帮助,但Visual Studio 2012生成的PDB文件格式现在可以更好地跟踪内联功能。因此,今后在大多数情况下,这种特殊情况应该得到缓解。您可以在此处阅读有关该功能的更多信息:
http://dotnet.dzone.com/news/debugging-optimized-code
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 如何使用 WinDbg 查找"GetProcAddress"函数的进程名称
- 在WindBG断点命令中调用JavaScript函数
- 使用 windbg 查找不在堆栈顶部的函数的函数参数
- WinDbg 和内联函数
- 如何使用 windbg 在不属于任何类的函数声明上设置断点
- 在名称包含 WinDBG 中的空格的重载函数处设置断点
- WinDbg 扩展 C++ dprintf 在函数退出之前不显示
- 如何在Windbg的析构函数中设置断点
- Windbg:如何在C++函数的重载之一上设置断点