Под сбоем подписи я подразумеваю «подпись проблемы», но в стеке не допускается слово «проблема» в заголовке.
Мои приложения зависают случайным образом, что приводит к типичному диалогу сбоя Windows 7. Вы нажимаете кнопку «Показать детали проблемы», и она показывает «подпись проблемы», которая выглядит примерно так:
Problem signature:
Problem Event Name: APPCRASH
Application Name: MyAPP.exe
Application Version: 1.0.0.1
Application Timestamp: 56f42d87
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.1.7601.23392
Fault Module Timestamp: 524f83ff
Exception Code: e06d7363
Exception Offset: 000084d5
OS Version: 6.1.7600.2.1.0.256.48
Locale ID: 1033
Additional Information 1: 59d3
Additional Information 2: 59d2b19b48819489f0f177fd879bb2a4
Additional Information 3: 4230
Additional Information 4: 4230b7cc692f7b01f72cd61a9ca3153f
я вижу Вот что это значит, но могу ли я использовать эту информацию для доступа к исходному коду и, предпочтительно, к номеру строки, вызывающей сбой?
Я предполагаю, что вы хотите мини-дамп (https://msdn.microsoft.com/en-us/library/windows/desktop/ms680369(v=vs.85).aspx). Это, вероятно, предоставит вам информацию, которую вы хотите.
Настройка отчетов об ошибках Windows (WER) генерировать дампы (работает с Windows Server 2008 RTM/Vista Sp1
). Этот пример .reg-файла настраивает Windows для создания полных дампов памяти всех сбоев приложения и сохраняет их в C:\localdumps
:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpFolder"=hex(2):43,00,3a,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,44,00,75,\
00,6d,00,70,00,73,00,00,00
"DumpType"=dword:00000002
Если вы хотите получить только дампы своего приложения, импортируйте этот файл .reg:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\MyAPP.exe]
"DumpFolder"=hex(2):43,00,3a,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,44,00,75,\
00,6d,00,70,00,73,00,00,00
"DumpType"=dword:00000002
Измените MyAPP.exe на ваше реальное имя приложения.
Теперь откройте dmp в Windbg, настройте Доступ к серверу символов Microsoft в Windbg а также добавьте ваши частные PDB в путь поиска символов. Теперь беги .srcfix; !analyze -v
и посмотрите, что Windbg скажет вам, где произошло сбой вашего приложения.