Да, это возможно. Начните отладку с теми же двоичными файлами, которые запускает ваш пользователь, убедитесь, что DLL загружена и у вас есть соответствующий файл PDB для нее. Посмотрите в Debug + Windows + Modules базовый адрес DLL. Добавьте смещение. Отладка + Windows + Разборка и введите рассчитанный адрес в поле Адрес (префикс 0x). Это показывает вам точную инструкцию машинного кода, которая вызвала исключение. Щелкните правой кнопкой мыши + Перейти к исходному коду, чтобы увидеть соответствующую строку исходного кода.
Хотя это показывает вам утверждение, обычно оно недостаточно для диагностики причины. Исключение 0xc0000005 является нарушением доступа, у него много возможных причин. Зачастую вы даже не получаете никакого кода, программа может забываться из-за поврежденного стека. Или настоящая проблема находится далеко, некоторые манипуляции с указателями повредили кучу. Как правило, вам также действительно нужна трассировка стека, которая показывает, как программа закончила выполнение оператора, который подвергся бомбардировке.
Что вам нужно, это мини-дамп. Вы можете легко получить его от своего пользователя, если она работает под управлением Vista или Win7. Запустите TaskMgr.exe, вкладка «Процессы», выберите запущенную программу, пока она все еще отображает диалог сбоя. Щелкните правой кнопкой мыши и создайте файл дампа.
Чтобы сделать это гладким, вы действительно хотите автоматизировать эту процедуру. В моем ответе вы найдете подсказки в этой теме .