Windows Error Reporting dumps VS procdump.exe

Can somebody clarify if memory dumps produced by WER are the same as those produced by procdump.exe? Can two these tools conflict when used simultaneously? What would be the right approach if my goal is to troubleshoot "service terminated unexpectedly" type of event for a service (on a Server 2012 R2 platform)?

4
задан 25 December 2016 в 19:45
1 ответ

Как procdump, так и WER хорошо подходят для захвата дампов падения пользовательского режима при сбое приложения.

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

WER захватывает мини-дампы по умолчанию, , но его можно настроить на захват полных дампов.

(Когда я говорю "полный дамп" в этом контексте, я имею в виду полное адресное пространство процесса в пользовательском режиме -- что угодно в режиме ядра выходит за рамки.)

procdump.exe, с другой стороны, это утилита Sysinternals (Марк Руссинович, Эндрю Ричардс и др.), которая спроектирована так, чтобы быть намного более гибкой, чем WER. Если WER был ножом для масла, то procdump - швейцарский армейский нож. Например, procdump.exe может быть настроен на автоматический захват дампа (или серии дампов), когда процесс остается > 90% использования процессора в течение 10 секунд, или > 500 Мб использования памяти, и т.д. и т.п. procdump также может быть настроен как ваш постоянный отладчик AeDebug для посмертной отладки, что, по сути, делает его заменой WER в этот момент.

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

procdump -ma -i C:\Dumps настраивает procdump.exe на автоматическое выполнение полного дампа памяти процесса каждый раз, когда на машине происходит сбой пользовательского режима, и помещает его в каталог C:\Dumps.

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

PS: Вы можете увидеть сообщение "служба неожиданно прервана", если служба на самом деле вышла из строя, но вы также можете увидеть это же сообщение, если служба просто почувствовала, что ей нужно выйти из строя, не сотрудничая с Service Manager, как она должна была это сделать. В этом случае разработчик службы был просто плохим разработчиком, а поскольку на самом деле не было сбоя, ни WER, ни procdump не помогут вам.

.
3
ответ дан 3 December 2019 в 03:40

Теги

Похожие вопросы