При отладке в 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, где я устанавливаю точку останова, а все остальные строки имеют загруженные символы.)
Теперь я знаю, как исправить предупреждение (-> получить файл pdb), что яне совсем понимаю, почему это все-таки отображается!Стек, который я вставил выше, полностью в порядке, просто у меня нет файла pdb для модуля dynlib2.dll.
Зачем отладчику нужен файл символов, чтобы убедиться, что стек правильный?