Поделиться через


Руководство по устранению неполадок с поведением приложения или службы

В этой статье содержатся рекомендации по устранению неполадок в поведении приложений или служб.

Область применения: все поддерживаемые версии Windows Server и клиента Windows

Если в журнале приложений неоднократно отображается идентификатор события 1001 и идентификатор события 1000, это означает, что в журнале приложений происходит сбой приложения. Он происходит вместе с процессами первого или стороннего производителя и указывает на возможный модуль сбоя.

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

Подготовка к работе

Рекомендации:

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

Сведения о событии 1001 level показывают, включен ли отчеты об ошибках Windows (WER) в системе. Однако необходимо изменить эту службу, чтобы собрать level сведения, необходимые для расследования. Система не регистрирует эту информацию по умолчанию, чтобы избежать незначительных затрат на производительность.

Идентификатор события 1000 с Error уровнем — это фактическое событие сбоя приложения. В нем показаны следующие сведения в качестве примера:

Log Name:      Application
Source:        Application Error
Date:          <Date Time>
Event ID:      1000
Task Category: Application Crashing Events
Level:         Error
Keywords:      
User:          SYSTEM
Computer:      demo.contoso.com
Description:
Faulting application name: netsh.exe, version: 10.0.22621.1, time stamp: 0x13af0815
Faulting module name: netsh.exe, version: 10.0.22621.1, time stamp: 0x13af0815
Exception code: 0xc0000005
Fault offset: 0x0000000000005399
Faulting process id: 0x0xFEE4
Faulting application start time: 0x0x1DAB66BB5BE07D4
Faulting application path: C:\WINDOWS\system32\netsh.exe
Faulting module path: C:\WINDOWS\system32\netsh.exe
Report Id: <Report ID>
Faulting package full name: 
Faulting package-relative application ID:

Он часто представляет модуль Майкрософт в качестве модуля сбоя, например ntdll.dll, kernel32.dll и kernelbase.dll. Эти модули часто используются при выполнении процессов и переходе между пользовательским режимом и режимом ядра. В этом процессе они пойманы в качестве жертв других видов коррупции, ранее выполненных неправильными модулями.

Распространенные исключения:

  • 0xc0000022

    STATUS_ACCESS_DENIED

  • 0xc0000005

    STATUS_ACCESS_VIOLATION

  • 0xc0000374

    STATUS_HEAP_CORRUPTION

При возникновении исключения можно включить дополнительное подробное ведение журнала для процесса и собрать полный дамп процесса с помощью отчеты об ошибках Windows (WER) и GFlags (gflags.exe).

Установите средства отладки для Windows, чтобы получить gflags.exe, так как он включен в средства. Однако вам нужно скопировать файл, не устанавливая средства на компьютере, который нуждается в устранении неполадок.

Собрать данные

В предыдущем примере сбоя netsh.exe настройте компьютер для сбора дампов для получения дополнительных сведений о том, что вызвало сбой. Замените netsh.exe исполняемым файлом, указанным в идентификаторе события 1000 на устройстве.

  1. Настройте WER для сбора полных дампов процесса исключения, выполнив следующие команды из командной строки с повышенными привилегиями:

    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"
    
    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"/v DumpFolder /t REG_EXPAND_SZ /d "C:\WER" /f
    
    md C:\WER
    
    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpCount /t REG_DWORD /d 10 /f
    
    reg add "HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpType /t REG_DWORD /d 2 /f
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe"
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpFolder /t REG_EXPAND_SZ /d "C:\WER" /f
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpCount /t REG_DWORD /d 10 /f
    
    reg add "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps\netsh.exe" /v DumpType /t REG_DWORD /d 2 /f
    

    Эти команды позволяют собирать и хранить в папке C:\WER до 10 полных дампов процесса netsh.exe.

    Примечание.

    Добавляется расположение реестра Windows в Windows 64 (WOW64), которое позволяет 32-разрядным приложениям работать в 64-разрядных системах.

  2. Настройте GFlags для отслеживания выделения кучи для трассировки повреждения.

    Перейдите в каталог, где находится средство, и выполните следующие команды из командной строки с повышенными привилегиями.

    Чтобы включить флаг включения кучи страницы (hpa):

    Gflags.exe /i netsh.exe +hpa
    

    Чтобы отключить флаг "Включить кучу страницы", выполните следующие действия.

    Gflags.exe /i netsh.exe -hpa
    

    Перезапустите процесс, чтобы параметр вступил в силу.

  3. Отслеживайте папку C:\WER и проверьте наличие созданных дампов.

Анализ данных

После создания дампов процесса вы можете:

  • Поделитесь соответствующими дампами со сторонней стороной для расследования, если процесс является сторонним процессом.
  • Обратитесь к служба поддержки Майкрософт для анализа данных, если процесс является первым процессом.
  • Используйте отладчик (windbg.exe), установленный с помощью средств отладки для Windows , и попробуйте определить модуль сбоя с помощью расширения !analyze.

После сбора данных и завершения исследования удалите раздел реестра (один с именем процесса) и отключите флаг "Включить кучу страниц" для GFlags.