在FPO打开的情况下,调试器如何获取堆栈信息? 我在某处读到 .pdb 文件包含调试器用来获取堆栈信息的 FPO 信息。那么,pdb 文件包含哪些内容可以帮助调试器获取堆栈跟踪?
例如,调试器遇到断点并且它有 ESP 和 pdb 文件。那么,调试器如何显示调用堆栈?
最佳答案
堆栈信息存储在可执行文件的 .pdata 部分。 看这里:Prolog and Epilog 在这里:pdata section
因此调试器可以通过查找 .pdata 部分中的展开信息来查找当前代码的位置并确定当前函数的堆栈布局。然后它可以确定返回地址并使用返回的函数重复此过程,依此类推...创建堆栈跟踪。
关于c++ - 使用帧指针优化进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373990/