2011-03-21 55 views
3

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

例如,调试器已经达到了一个中断点,它有ESP和pdb文件。那么,调试器如何显示调用堆栈?

+0

如果你正在用debug = on编译,你不需要堆栈告诉你,你在哪里 - debug build可以使它自己的堆栈跟踪 – fazo 2011-03-21 17:06:18

回答

2

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

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