【发布时间】:2010-09-15 13:21:46
【问题描述】:
在 Visual Studio 中调试时,如果缺少调用堆栈的符号,例如:
00 > HelloWorld.exe!my_function(int y=42) Line 291
01 dynlib2.dll!10011435()
[Frames below may be incorrect and/or missing, no symbols loaded for dynlib2.dll]
02 dynlib2.dll!10011497()
03 HelloWorld.exe!wmain(int __formal=1, int __formal=1) Line 297 + 0xd bytes
04 HelloWorld.exe!__tmainCRTStartup() Line 594 + 0x19 bytes
05 HelloWorld.exe!wmainCRTStartup() Line 414
06 kernel32.dll!_BaseProcessStart@4() + 0x23 bytes
调试器将显示警告Frames below may be incorrect and/or missing。
(请注意,只有第 01 行和第 02 行没有符号。第 00 行,我设置了一个断点,所有其他行都加载了符号。)
现在,我知道如何修复警告(->get pdb 文件),但我不太明白为什么会显示它!我上面贴的栈完全没问题,只是我没有dynlib2.dll模块的pdb文件。
为什么调试器需要符号文件来确保堆栈正确?
【问题讨论】:
标签: c++ visual-c++ debugging callstack