Понимать аварийный дамп из приложения Visual C ++ - PullRequest
4 голосов
/ 15 июня 2011

ОБНОВЛЕНИЕ

Благодаря полученной ниже обратной связи я смог использовать ADPlus.vbs, который является частью средств отладки для Windows.

Нене забудьте настроить _NT_SYMBOL_PATH перед его запуском.

Используя это, мы смогли гораздо более ясно видеть приложение с гораздо большей ясностью, чем мы когда-либо использовали обычные дампы, создаваемые через Windows, когда приложениесбои.

Большое спасибо всем за ответы.

ОРИГИНАЛЬНЫЙ ВОПРОС

У нас есть серверное приложение, написанное на Visual C ++, которое иногда (относительноредко) вылетает на сайтах клиентов.Мы не смогли понять, почему это происходит, основываясь на наших собственных файлах журналов, поэтому следующий шаг - начать просмотр аварийных дампов.

Мы только что намеренно добавили ошибку в наше приложение (нулевой указатель), чтобы мы могли сгенерировать аварийный дамп и убедиться, что созданные дампы полезны, но пока я не могу понять, что вижу.

Думаю, мой первый вопросявляется ли я даже правильно настроил WinDbg (другой разработчик здесь загружает дамп в Visual Studio 2010 и видит те же ошибки, поэтому я предполагаю, что все в порядке, или мы оба не правы :)) - и затемСледующий вопрос: как мне понять, что он говорит мне?

Основная путаница в том, что дамп, кажется, говорит мне, что он достиг точки останова, что мне кажется странным, так как не было подключенного отладчика.

Приложение работало в системе Windows Server 2003 после сбоя.Мне кажется, я правильно указал WinDbg на файл PDB для DLL и EXE.

FAULTING_IP: 
ntdll!DbgBreakPoint+0
7c81a3e1 cc              int     3

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 7c81a3e1 (ntdll!DbgBreakPoint)
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 3
   Parameter[0]: 00000000
   Parameter[1]: 8779fdb0
   Parameter[2]: 00000003

DEFAULT_BUCKET_ID:  STATUS_BREAKPOINT

PROCESS_NAME:  CallPlusServerLauncher.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.

EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid

EXCEPTION_PARAMETER1:  00000000

EXCEPTION_PARAMETER2:  8779fdb0

EXCEPTION_PARAMETER3:  00000003

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

ADDITIONAL_DEBUG_TEXT:  Followup set based on attribute [Is_ChosenCrashFollowupThread] from Frame:[0] on thread:[ffffffff]

FAULTING_THREAD:  ffffffff

PRIMARY_PROBLEM_CLASS:  STATUS_BREAKPOINT

BUGCHECK_STR:  APPLICATION_FAULT_STATUS_BREAKPOINT

STACK_TEXT:  
1bd0ffc8 7c83fe08 00000005 00000004 00000001 ntdll!DbgBreakPoint
1bd0fff4 00000000 00000000 00000000 00000000 ntdll!DbgUiRemoteBreakin+0x36


FOLLOWUP_IP: 
ntdll!DbgBreakPoint+0
7c81a3e1 cc              int     3

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  ntdll!DbgBreakPoint+0

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: ntdll

IMAGE_NAME:  ntdll.dll

DEBUG_FLR_IMAGE_TIMESTAMP:  49900d60

STACK_COMMAND:  ddS 1bd10000 1bd0c000 ; dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~439s; .ecxr ; kb

BUCKET_ID:  MANUAL_BREAKIN

FAILURE_BUCKET_ID:  STATUS_BREAKPOINT_80000003_ntdll.dll!DbgBreakPoint

WATSON_STAGEONE_URL:      http://watson.microsoft.com/StageOne/CallPlusServerLauncher_exe/0_0_0_0/4df87414/ntdll_dll/5_2_3790_4455/49900d60/80000003/0001a3e1.htm?Retriage=1

Followup: MachineOwner

Ответы [ 2 ]

1 голос
/ 15 июня 2011

DbgBreakPoint - мне кажется, что вы прервали выполнение с помощью удаленного отладчика.

Если вы этого не сделали, я видел, как DbgBreakPoint появлялся, когда у вас были включены кодовые страницы (Edit: я имел в виду page heap) (вы должны знать, сделали ли вы это), и было обнаружено недопустимое обращение к памяти.

0 голосов
/ 15 июня 2011

Утверждения также могут вызывать исключение точки останова. Например, я (слишком часто) видел, как они выходят из проверки кучи вокруг удаления, когда куча была повреждена в результате двойного удаления или переполнения. Но я думал, что только во время выполнения отладки вы развернули это?

...