У меня есть некоторый 64-битный код, который работает в режиме выпуска на сервере. На сервере нет Visual Studio, только на моей dev-машине. Эта программа была написана многими авторами (я последний), и некоторый код в ней мне еще не знаком, и она довольно большая.
Программа аварийно завершает работу с нулевым указателем. Инструкция по адресу 0xwh независимо (последний 0x40066c19) ссылается на память по адресу 0x00000000 - нажмите кнопку ОК, чтобы завершить программу. У меня есть все исходные файлы и файлы PDB для EXE, но когда я запускаю его и присоединяю процесс, память 0x40066c19 полностью вне диапазона. Есть только ?? в этой области. Как вы используете информацию о "инструкции в ..."?
В окне разборки отображается что-то вроде (пример) - но, как вы видите, просто слишком далеко от 00000001403CB888 до 0x40066c19
if (LastKickIdle > GetTickCount())
00000001403CB882 call qword ptr [__imp_GetTickCount (0140688310h)]
00000001403CB888 cmp dword ptr [LastKickIdle (0140888DF8h)],eax
00000001403CB88E ja CMainDlg::OnKickIdle+281h (01403CBAB1h)
return 1;
LastKickIdle = GetTickCount() + 500;
00000001403CB894 mov qword ptr [__formal],rbx
00000001403CB89C call qword ptr [__imp_GetTickCount (0140688310h)]
00000001403CB8A2 add eax,1F4h
00000001403CB8A7 mov dword ptr [LastKickIdle (0140888DF8h)],eax