c++ - 使用帧指针优化进行调试

标签 c++ visual-studio debugging

在FPO打开的情况下,调试器如何获取堆栈信息? 我在某处读到 .pdb 文件包含调试器用来获取堆栈信息的 FPO 信息。那么,pdb 文件包含哪些内容可以帮助调试器获取堆栈跟踪?

例如,调试器遇到断点并且它有 ESP 和 pdb 文件。那么,调试器如何显示调用堆栈?

最佳答案

堆栈信息存储在可执行文件的 .pdata 部分。 看这里:Prolog and Epilog 在这里:pdata section

因此调试器可以通过查找 .pdata 部分中的展开信息来查找当前代码的位置并确定当前函数的堆栈布局。然后它可以确定返回地址并使用返回的函数重复此过程,依此类推...创建堆栈跟踪。

关于c++ - 使用帧指针优化进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373990/

相关文章:

c++ - TreeView控件和非递归

c++ - 这种分配对速度有影响吗?

c# - 在组合框中设置默认项

php - 可以检测 PhpStorm 中 if 条件内的变量分配吗?

javascript - 如何使用JSON.parse reviver参数解析日期字符串

c++ - gcc关于嵌套依赖项的共享库 “undefined reference”

c++ - 当我们在 qt 中关闭一个窗口时发出的信号是什么

c# - 如何在设计器中单击用户控件子项?

javascript - 简单的 react 计数器

c++ - 在 LLDB 中,我可以调用方法并创建 C++ 类的实例吗?