Время от времени (гм...) мой код дает сбой в какой-то системе; довольно часто мои пользователи присылают скриншоты диалогов сбоя Windows. Например, я недавно получил это:
Unhandled win32 exception @ 0x3a009598 in launcher2g.exe: 0xC00000005: Access violation writing location 0x00000000.
Мне ясно (из-за кода 0xc0000005, а также написанного сообщения об ошибке), что я следую нулевому указателю где-то в моем процессе launcher2g.exe. Что мне непонятно, так это значение числа «0x3a009598». Является ли это смещением кода в адресном пространстве процесса, где хранится инструкция ассемблера, вызвавшая проблему?
Предполагая, что 0x3a000000 — это позиция, в которой модуль launcher2g.exe был загружен в процесс, я использовал отладчик Visual Studio для проверки ассемблерного кода по адресу 0x3a009598, но, к сожалению, это было просто множество инструкций «int 3» (это была отладка). build, так что есть много отступов int 3).
Мне всегда было интересно, как максимально использовать эти числа @ 0x12345678 - было бы здорово, если бы кто-нибудь здесь мог пролить на это свет или поделиться некоторыми указателями для дальнейших объяснений.
ОБНОВЛЕНИЕ: Если кто-то найдет этот вопрос в будущем, вот очень интересное чтение, которое я нашел, которое объясняет, как понимать сообщения об ошибках, как я цитировал выше: Поиск информации о сбоях с помощью файла MAP.