Я создаю программу, и она отлично работает последние несколько дней. Когда я запускаю его сегодня, это показывает Unhandled exception at 0x7770efc8 in LHM.exe: 0xC0000005: Access violation writing location 0x00440f48.
ntdl.dll! 7770fb12 ()
В приведенном ниже стеке вызовов это указывает на то, что указанные ниже кадры могут быть неправильными и / или отсутствующими, символы не загружаются для ntdll.dll.
И я нашел, что ntdl.dll! 7770fb12 () 7770FB12 push esi
в разборке.
Могу ли я решить эту проблему?
Даже если в стеке вызовов нет определенного местоположения, когда вызов в вашем коде в конечном итоге приводит к появлению ntdll.dll, в большинстве случаев вы можете точно определить вызов, пройдя по коду с самого начала. Если ваш код слишком велик, попробуйте случайным образом установить точки останова и сузить их непрерывно.
Это очень простая и, возможно, грубая процедура отладки, но она мне очень помогает …
«Кадры ниже могут быть неправильными», безусловно, не является признаком поврежденного стека. Это легко решается, если вы загружаете публичные символы для ntdll с серверов MS (это легко сделать из IDE — скажем, щелкните правой кнопкой мыши ntdll в окне «модулей»).
Доступно более глубокое погружение Вот.