Я знаю, что при сбое приложения система сообщает о сбое в расположении 0x00004b79 в mydll.dll.У меня есть исходный код, и у меня есть двоичный файл, но у меня нет PDB или каких-либо файлов списков из сборки этой DLL.
Сбой повторяется, но я не могу установить отладчикна рабочей машине, и сбой не происходит в средах разработки или отладки.Я настроил Dr. Watson, у меня есть аварийный дамп и файл журнала Dr. Watson.
Файл журнала Dr. Watson содержит эту разборку для выполняемой функции:
10604b70 8b442408 mov eax,[esp+0x8]
10604b74 8b542404 mov edx,[esp+0x4]
10604b78 50 push eax
FAULT ->10604b79 8b4120 mov eax,[ecx+0x20] ds:0023:00000020=????????
10604b7c 52 push edx
10604b7d 6801800000 push 0x8001
10604b82 50 push eax
10604b83 ff156c946210 call dword ptr [mydll!DllUnregisterServer+0x1720c (1062946c)]
10604b89 c20800 ret 0x8
(инструкции INT 3 предшествуют и следуют приведенному выше фрагменту сборки.)
Трассировка стека включает только адрес mydll + 0x4b79.Он не дает никакой информации о вызывающем абоненте.
Загрузка аварийного дампа в windbg не предоставила никакой дополнительной информации.
Как определить, в какой функции (или даже лучше, в какой строкекода) произошел сбой?