2011-03-21 56 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部分開卷信息確定當前函數的棧佈局。然後它可以確定返回地址並使用返回的函數重複此過程,等等......創建堆棧跟蹤。