使用帧指针优化进行调试

时间:2011-03-21 05:00:38

标签: c++ visual-studio debugging

调试器如何通过FPO获取堆栈信息? 我在某处读到.pdb文件包含调试器用来获取堆栈信息的FPO信息。那么,pdb文件包含哪些帮助调试器来获取堆栈跟踪?

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

1 个答案:

答案 0 :(得分:2)

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

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