启用帧指针优化进行调试

4

调试器如何在使用FPO时获取堆栈信息? 我在某个地方读到,.pdb文件包含调试器用于获取堆栈信息的FPO信息。那么,pdb文件包含什么内容可以帮助调试器获取堆栈跟踪信息呢?

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


如果您正在使用debug=on编译,您不需要堆栈告诉您您在哪里 - 调试构建可以生成自己的堆栈跟踪。 - fazo
1个回答

2
堆栈信息存储在可执行文件的.pdata部分中。 请参见此处:Prolog and Epilogpdata section 因此,调试器可以通过查找.pdata部分中的解包信息来查找当前代码的位置并确定当前函数的堆栈布局。然后,它可以确定返回地址,并重复这个过程,直到返回到函数,从而创建一个堆栈跟踪。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接