Использование средства ADPlus устранения «зависаний» и аварийного завершения работы

Переводы статьи Переводы статьи
Код статьи: 286350 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

ADPlus - это средство службы технической поддержки Майкрософт (Product Support Services - PSS), предназначенное для устранения неполадок в любом процессе или приложении, в которых произошел сбой (аварийное завершение работы) или которые перестали отвечать («зависли»). Средство ADPlus (ADPlus.vbs) в большинстве случаев можно использовать вместо монитора исключений Microsoft Internet Information (IIS) Server Exception Monitor (6.1/7.1) и дампа процесса пользовательского режима (User Mode Process Dump). Эти два средства часто используются службой технической поддержки для определения причины отсутствия ответа (зависание) или неожиданного (аварийного) завершения работы в среде Microsoft Windows DNA.

Дополнительная информация

Требования к системе

Минимальные требования к системе для использования ADPlus.
  • Windows NT 4.0 с пакетом обновления 4 (SP4) или более поздней версии.
  • Windows Scripting Host 5.6 или более поздней версии
  • Не менее 10 МБ свободного пространства на диске или в сетевой папке, где ADPlus будет размещать выходные файлы
  • Установленное средство Microsoft Debugging Tools for Windows

Новые функции ADPlus версии 6.0

Средство ADPlus версии 6.0 было полностью переписано. У него новые параметры и новые возможности. Теперь это средство можно настраивать с помощью внешнего файла конфигурации. Просмотреть обновленные сведения о новых функциях и параметрах можно в файле справки отладчика (Debugger.chm), который входит в состав пакета отладчиков Microsoft Windows Debuggers. Загрузить этот пакет можно с веб-сайта корпорации Майкрософт по адресу:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
Файл Debugger.chm находится в той же папке, что и файл ADPlus.vbs. Чтобы найти документацию по ADPlus, откройте вкладку Содержимое и просмотрите следующие разделы.
  • Использование средства Microsoft Debugging Tools for Windows
  • Файлы аварийного дампа
  • Файлы дампа пользовательского режима
  • Создание файла дампа пользовательского режима
  • ADPlus
Также для поиска документации по ADPlus можно использовать вкладку Индекс. В текстовом поле введите ключевое слово ADPlus.

Какие функции выполняет средство ADPlus?

ADPlus – это консольный сценарий Microsoft Visual Basic. Он автоматизирует создание отладчиком Microsoft CDB дампов памяти и файлов журнала, содержащих выходные данные отладки одного или нескольких процессов. При каждом запуске ADPlus данные отладки (дампы памяти и текстовые файлы, содержащие данные отладки) помещаются в новую папку с уникальным именем (таким как C:\Temp\Crash_Mode__Date_01-22-2001__Time_09-41-08AM) в локальной системе или в удаленной сетевой папке. Кроме того, каждый создаваемый ADPlus файл имеет уникальное имя (например, PID-1708__Inetinfo.exe__Date_01-22-2001__Time_09-41-08AM.log), чтобы исключить перезапись старых файлов новыми.

ADPlus работает с любым процессом пользовательского режима или службой, например Internet Information Services (IIS), Microsoft Transaction Server (MTS) или приложениями Microsoft COM+.

Ниже перечислены некоторые возможности ADPlus.
  • ADPlus использует самые новые отладчики Майкрософт для повышения производительности и надежности.
  • Когда ADPlus создает дамп памяти нескольких процессов, это выполняется асинхронно, так что каждый процесс одновременно обрабатывается и замораживается. Этот метод может обеспечить эффективное создание «снимка» всего приложения на момент выполнения ADPlus. Чтобы собрать сведения о состоянии приложения на момент появления проблемы, необходимо собрать данные всех процессов, составляющих приложение, и всех процессов, которые в это время использует приложение. Это особенно важно для приложений, которые выполняют удаленный вызов процедур в другие процессы.
  • ADPlus имеет интерфейс командной строки. Поскольку у средства ADPlus нет графического интерфейса, его можно запускать в тихом режиме (чтобы не открывать диалоговые окна) из удаленной командной оболочки (командная оболочка, которая удалена с помощью Remote.exe). В тихом режиме ошибки отображаются в консоли и записываются в журнал событий. Дополнительные сведения о запуске ADPlus из удаленной командной оболочки см. в разделе «Сценарии использования» этой статьи.
  • Если используется параметр -notify, когда ADPlus отслеживает сбои, и запущена служба Windows Messenger, ADPlus может оповещать пользователя или компьютер о сбое с помощью службы Windows Messenger.
  • Когда ADPlus контролирует процесс в режиме сбоя, если происходит сбой, ADPlus отправляет необходимые сведения о типа сбоя в журнал событий.
  • ADPlus поддерживает развертывание XCOPY. Если установлен пакет отладчиков, который входит в состав ADPlus, на тестовый компьютер, то папку, в которую были установлены отладчики, можно скопировать на другой компьютер. Кроме того, ADPlus не требует регистрации никаких пользовательских компонентов модели COM в системе. Благодаря этому ADPlus можно использовать на рабочих серверах с заблокированной конфигурацией программного обеспечения. Чтобы удалить средство ADPlus, удалите папку, в которую оно было установлено или скопировано.

Когда следует использовать ADPlus?

Средство ADPlus предназначено для предоставления специалистам службы поддержки Майкрософт данных отладки, необходимых для выявления источника проблем, которые возникают в сложных средах.

Средство ADPlus следует использовать для сбора данных в случае перечисленных ниже проблем.
  • Процессы, которые перестали отвечать на запросы.
  • Процессы, которые загружают процессор на 100% для однопроцессорного компьютера, на 50% - для компьютера с двумя процессорами, на 25% - для компьютера с четырьмя процессорами и т.д.
  • Процессы, которые неожиданно завершают работу.

Когда не следует использовать ADPlus?

Средство ADPlus не следует использовать в следующих ситуациях.
  • Если необходимо устранение неполадок в программе или процессе, которые неожиданно завершили работу во время запуска. Средство ADPlus можно использовать для процессов, которые успешно запущены. Для устранения неполадок процесса, который неожиданно завершился при запуске, рекомендуется использовать дамп процесса пользовательского режима. Дополнительные сведения о дампе процесса пользовательского режима см. в следующей статье базы знаний Майкрософт:
    253066 Доступность OEM Support Tools Phase 3 Service Release 2 (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
    Также можно использовать самые новые отладчики для отладки процесса вручную. Дополнительные сведения о последних отладчиках см. на веб-сайте Майкрософт по адресу:
    http://www.microsoft.com/whdc/devtools/debugging/default.mspx
  • Если использование ADPlus в режиме сбоя оказывает заметное влияние на производительность. Обычно это связано с динамическими библиотеками (DLL) или программами, которые создают много исключений Microsoft Visual C++ EH. (Эти исключения возникают при использовании оператора throw в C++ или блоков try/catch.) Программы, которые записывают много данных в поток вывода отладчика, также могут вызвать снижение производительности. В подавляющем большинстве случаев ADPlus при работе в режиме сбоя заметно не влияет на производительность.
  • При использовании ADPlus в кластерной среде следует предпринять определенные меры предосторожности. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
    841673 Сервер в кластере может перейти на другой узел при попытке создать файл дампа банка данных с помощью средства ADPlus или Userdump в Exchange 2000 Server или Exchange Server 2003 (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Где получить средство ADPlus?

ADPlus входит в состав последнего пакета средств отладки Microsoft Debugging Tools for Windows. Для загрузки новейших средств Windows для отладки посетите следующий веб-сайт корпорации Майкрософт:
http://www.microsoft.com/whdc/devtools/ddk/default.mspx

Как работает средство ADPlus?

У ADPlus имеются два режима работы:
  • Режим «зависание» используется для устранения неполадок при зависании процесса, 100%-ной загрузки процессора и других проблемах, к которым не относятся сбои. При использовании средства ADPlus в режиме зависания перед запуском сценария следует дождаться, пока процесс или процессы не перестанут отвечать (в отличие от режима сбоя режим зависания не является постоянным).
  • Режим «сбой» используется для устранения неполадок при сбоях, которые приводят к регистрации ошибок в журнале программы «Доктор Ватсон», или любых других ошибках, которые вызывают аварийное завершение работы программы или службы. При использовании средства ADPlus в режиме сбоя это средство должно быть запущено до того, как сбой произойдет. Параметр -notify позволяет настроить ADPlus на уведомление администратора или компьютера о сбое.

Режим зависания

В этом режиме средство ADPlus немедленно создает полные дампы памяти для всех процессов, которые указаны в командной строке, после выполнения сценария. Каждый созданный DMP-файл помещается в папке, содержащую отметку даты и времени запуска ADPlus. Имя файла состоит из имени процесса, идентификатора процесса и отметки даты и времени запуска ADPlus. Когда создается дамп памяти процесса, процесс замораживается. После того как файл дампа памяти будет создан, процесс возобновляется с использованием не вмешивающегося в работу системы присоединения и отсоединения с помощью отладчика CDB.

Совет. Вместо Userdump.exe для создания дампа памяти одного или нескольких процессов можно использовать средство ADPlus в режиме зависания. Кроме того, режим зависания работает в сеансе сервера терминалов.

Режим сбоя

В этом режиме средство ADPlus присоединяет отладчик CDB ко всем процессам, которые указаны в командной строке. ADPlus автоматически настраивает отладчик для отслеживания следующих типов исключений:
  • Недопустимый дескриптор
  • Недопустимая инструкция
  • Целочисленное деление на ноль
  • Деление на ноль с плавающей запятой
  • Переполнение целочисленного значения
  • Неверная последовательность блокировки
  • Нарушение прав доступа
  • Переполнение стека
  • Исключение C++ EH
  • Неизвестное исключение
Средство ADPlus в режиме сбоя можно использовать вместо монитора исключений IIS или Userdump.exe при устранении неполадок для исключений указанных типов. Поскольку в режиме сбоя используется присоединение отладчика CDB с вмешательством в работу системы, этот режим не работает в сеансе сервера терминалов Microsoft Windows NT 4.0 и Windows 2000. В сеансе сервера терминалов этих операционных систем работает только режим зависания, поскольку для них требуется присоединение без вмешательства в работу системы. Дополнительные сведения о присоединении новых отладчиков с вмешательством в работу системы и без него см. в разделе справки по отладчикам «Использование средств отладки для Windows: присоединение к выполняющемуся процессу (пользовательский режим)».

Примечание. Режим сбоя поддерживается в сеансе сервера терминалов в операционных системах Windows XP и Microsoft Windows Server 2003.

При работе ADPlus в режиме зависания отладчик остается присоединенным к каждому процессу, который указан в командной строке, в течение времени существования этого процесса, пока не будет обнаружено неустранимое исключение и процесс не будет аварийно завершен или пока пользователь не нажмет сочетание клавиш CTRL+C, чтобы отсоединить отладчик от данного процесса. Для отсоединения отладчика от процесса вручную следует развернуть окно отладчика и нажать CTRL+C, чтобы получить доступ к отладчику.

Когда пользователь нажимает сочетание клавиш CTRL+C, ADPlus перехватывает эту команду, запускает запись стеков всех потоков в файл журнала, а затем создает мини-запись дампа памяти процесса, прежде чем отсоединиться от отладчика. Поскольку в режиме сбоя выполняется отсоединение без вмешательства в работу системы, при отсоединении отладчика процесс останавливается. Процесс должен быть перезапущен. Если это процесс MTS или COM+, он перезапускается автоматически при следующем вызове компонента в этом пакете.

Первый экземпляр исключения.

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

Дополнительные сведения о первом и втором экземпляре исключения и структурированном обработчике исключений Windows NT SEH см. в следующей статье базы знаний Майкрософт:
105675 Обработка первого и второго экземпляра исключения (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
По умолчанию, когда ADPlus определяет первый экземпляр исключения (не являющийся неустранимым) для всех типов исключений кроме неизвестных исключений и исключений EH, выполняются следующие действия.
  1. Процесс приостанавливается для регистрации даты и времени исключения в файле журнала для отслеживаемого процесса.
  2. Регистрируется идентификатор потока и стек вызова для потока, который создал исключение, в файле журнала для отслеживаемого процесса.
  3. Создается мини-запись дампа памяти процесса с уникальным именем (.dump -u /m) на момент создания исключения, затем процесс возобновляется.
Примечание. По умолчанию ADPlus не создает уникальную запись дампа памяти для первого экземпляра исключений EH и неизвестных исключений, поскольку эти исключения возникают часто. Обычно такие исключения обрабатываются кодом обработки исключений в процессе или DLL. Поскольку это обработанные исключения, они не становятся вторым экземпляром исключений (необрабатываемым) и не завершают процесс.

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

Второй экземпляр исключения.

Когда ADPlus определяет второй экземпляр исключения (неустранимый) для всех типов исключений (включая исключения EH и неизвестные исключения), выполняются следующие действия.
  1. Процесс приостанавливается для регистрации даты и времени исключения в файле журнала для отслеживаемого процесса.
  2. Регистрируется идентификатор потока и стек вызова для потока, который создал исключение, в файле журнала для отслеживаемого процесса.
  3. Создается полный дамп памяти процесса на момент создания неустранимого исключения, затем работа отладчика завершается. Это действие уничтожает процесс.
Примечание. Специалистам службы поддержки Майкрософт для анализа дампов памяти могут потребоваться копии любых пользовательских компонентов или библиотек DLL и соответствующие файлы символов. Дополнительные сведения о создании создании файлов символов для библиотек DLL см. в следующих статьях базы знаний Майкрософт:
121366 Что такое PDB- и DBG-файлы и как они работают (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
291585 Создание символов отладки для приложения Visual C++ (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Дополнительные сведения о получении символов для продуктов Майкрософт (необходимых для анализа дампов памяти с помощью отладчиков) см. на веб-сайте Майкрософт по адресу:
http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx

Параметры командной строки ADPlus.

Чтобы использовать ADPlus, необходимо указать ряд параметров командной строки или аргументов сценария. Как минимум, для ADPlus требуется два параметра: один указывает режим работы, второй – целевой процесс для работы.

Ниже перечислены наиболее часто используемые параметры. Полный список параметров можно просмотреть, выполнив команду ADPlus –help, или просмотрев файл справки отладчика (Debugger.chm).
  • -hang
    Этот параметр настраивает выполнение ADPlus в режиме зависания. Данный параметр должен использоваться с параметрами -iis, -pn или -p. Параметр -hang не может использоваться с параметром -crash.

    Примечание. Когда ADPlus работает в режиме зависания, его следует запускать после того, как процесс перестал отвечать, или начал потреблять большую долю ресурсов процессора.
  • -crash
    Этот параметр настраивает выполнение ADPlus в режиме сбоя. Данный параметр должен использоваться с параметрами -iis, -pn или -p. Параметр -crash не может использоваться с параметром -hang.

    Примечание. Когда ADPlus работает в режиме сбоя, его следует запускать до того, как процесс аварийно завершил работу или стал нестабильным.
  • -pn имя процесса
    Параметр -pn используется для указания имени процесса, анализ которого должен быть выполнен средством ADPlus. Чтобы указать несколько процессов, следует использовать несколько параметров -pn имя процесса. Например:
    -pn process1.exe -pn process2.exe
  • -p идентификатор процесса
    Параметр -p используется для указания идентификатора процесса (PID), анализ которого должен быть выполнен средством ADPlus. Чтобы указать несколько процессов, следует использовать несколько параметров -p PID. Например:
    -p 1896 -p 1702
  • -scзапускающая команда
    В отличие от параметров -pn и -p, которые указывают уже выполняющиеся процессы для присоединения к ним отладчика, параметр -sc определяет приложение и параметры, которое должно быть запущено в отладчике. Например:
    -sc "c:\windows\system32\notepad.exe
  • -iis
    Параметр -iis используется для отладки серверных компьютеров, на которых запущен Internet Information Server (IIS) 4.0 или более поздней версии. При использовании ADPlus с параметром -iis выполняется контроль всех внутрипроцессных (Inetinfo.exe) и внешних (Mtx.exe/Dllhost.exe) приложений IIS. Параметр -iis можно использовать с параметром -pn или -p, а также самостоятельно, для анализа IIS и всех выполняющихся приложений MTS/COM+ как в режиме сбоя, так и в режиме зависания.

    Для анализа сервера с IIS 3.0 или более ранней версии используйте параметр -pn и укажите процесс Inetinfo.exe в качестве отслеживаемого.
  • -notify имя компьютера или имя пользователя
    Этот параметр допустим только для работы ADPlus в режиме сбоя. Этот параметр настраивает ADPlus для оповещения указанного пользователя или компьютера о сбое. Когда отладчик отсоединяется от процесса вследствие создания второго экземпляра исключения или когда пользователь нажимает сочетание клавиш CTRL+C, чтобы остановить отладку, удаленному пользователю или компьютеру отправляется уведомление с помощью локальной службы обмена сообщениями. Уведомление происходит только в том случае, если на отслеживаемом компьютере запущена локальная служба обмена сообщениями.
  • -quiet
    Этот параметр указывает ADPlus подавлять все модальные диалоговые окна. Этот параметр полезен при запуске ADPlus из уделанной командной оболочки, когда модальные диалоговые окна могут заставить ADPlus неопределенное время ожидать нажатия пользователем кнопки OK. Для получения наилучших результатов этот параметр должен быть первым параметром, переданным в ADPlus.vbs.
  • -o выходной каталог
    Этот параметр указывает каталог, в котором ADPlus будет размещать выходные файлы отладки. Если используются длинные имена файлов, их следует заключить в двойные кавычки. Кроме того, можно использовать UNC-путь (\\server\share). Если используется UNC-путь, ADPlus создает новую папку непосредственно на следующем уровне UNC-пути, который был указан. Папке присваивается имя сервера, на котором выполняется ADPlus (например, \\server\share\Web1 или \\server\share\Web2). Этот параметр полезен, когда ADPlus запускается на нескольких компьютерах веб-фермы, которые помещают свои выходные файлы в одну сетевую папку.

Первый запуск ADPlus

По умолчанию отладчики устанавливаются в папку C:\Program Files\Debugging Tools for Windows. Чтобы изменить папку для установки, при установке отладчиков выберите пользовательскую установку и укажите другую папку. Вместо этого, если выполнена обычная установка, скопируйте содержимое папки Program Files\Debugging Tools for Windows в другую папку.

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

Возможно, вам будет предложено сменить интерпретатор сценариев с Wscript.exe на Cscript.exe. Настоятельно рекомендуем разрешить ADPlus настроить CSCript как интерпретатор сценариев по умолчанию.

Синтаксис

Ниже указан синтаксис, используемый средством ADPlus. ADPlus.vbs режим работы процессы для отслеживания необязательные параметры, где режим работы – это -hang или -crash,
процессы для отслеживания – это -iis, -pn процесс.exe или -p PID,
необязательные параметры – это -notify, -o или -quiet.

Подготовка сервера к отладке в режиме сбоя

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

Действия по подготовке сервера на основе Windows 2000 к отладке в режиме сбоя

  1. Установите символы для Windows 2000 с пакетом обновления 1 (SP1) или 2 (SP2) в папку C:\WINNT\Symbols на своих серверах. Символы можно загрузить со следующих веб-сайтов Майкрософт:
    Windows 2000 с пакетом обновления 1 (SP1)
    http://download.microsoft.com/download/win2000platform/SP/SP1/NT5/EN-US/SP1SYM.exe

    Windows 2000 с пакетом обновления 2 (SP2)
    http://download.microsoft.com/download/win2000platform/SP/SP2/NT5/EN-US/SP2SYM.exe

    Когда файл Sp1sym.exe или Sp2sym.exe будет загружен, запустите его из указанной папки.
  2. В ответ на приглашение извлеките файлы в новую временную папку, например C:\Sp1sym или C:\Sp2sym, или на диск или в папку, в которой имеется достаточно места.
  3. Запустите файл C:\Sp1sym\Support\Debug\Symbols\i386\Symbols_spexe или C:\Sp2sym\Support\Debug\Symbols\i386\Symbols_spexe (где C:\Sp1sym или C:\Sp2sym – это папка, в которую были извлечены файлы на предыдущем шаге).
  4. Нажмите кнопку Да в сообщении с запросом EULA.
  5. Когда появится запрос на выбор папки, в которую можно извлечь файлы, щелкните C:\WINNT\Symbols, а затем нажмите кнопку ОК. Будет создана новая папка C:\WINNT\Symbols. В этой папке имеется несколько вложенных папок с такими именами, как DLL и EXE.
  6. Скопируйте символы в свои пользовательские библиотеки DLL, а все исправления, выпущенные после пакетов обновления 1 или 2 (SP1 или SP2), – в папку C:\WINNT\Symbols\Dll.
  7. Скопируйте символы для своих пользовательских EXE-файлов в папку C:\WINNT\Symbols\Exe. Кроме того, от разработчиков следует получить файлы .pdb или.dbg и сохранить эти файлы в папке C:\WINNT\Symbols\Dll.
  8. Замените файлы .или .pdb, которые уже имеются в папке C:\WINNT\Symbols\Dll, версиями этих файлов из полученных исправлений.

    Примечание. Чтобы открыть пакеты исправлений, можно использовать архиватор Winzip последней версии. Символы можно извлечь из вложенной папки \Debug. Эта папка имеется в каждом самоустанавливающемся файле исправлений.
  9. Создайте переменную среды _NT_SYMBOL_PATH и установите для нее значение C:\WINNT\Symbols. Это может быть или системная переменная, или пользовательская переменная среды.

Действия по подготовке сервера на основе Windows NT 4.0 к отладке в режиме сбоя

  1. Предположим, на компьютере установлена операционная система Windows NT 4.0 с пакетом обновления 6a (SP6a) Установите символы для Windows NT 4.0 с пакетом обновления 6a (SP6a) в папку C:\WINNT\Symbols на своих серверах.
    Дополнительные сведения о пакете обновления 6 (SP6 и SP6a) для Windows NT 4.0 см. в следующей статье базы знаний Майкрософт:
    241211 Список исправлений ошибок, включенных в пакет исправлений Microsoft Windows NT 4.0 Service Pack 6/6a (Часть 1)
    После загрузки файла Sp6symi.exe запустите его из указанной папки.
  2. В ответ на приглашение извлеките файлы в папку C:\WINNT (или замените на соответствующую папку \WINNT, если символы были установлены не в C:\WINNT). Будет создана новая папка C:\WINNT\Symbols, содержащая различные вложенные папки с именами DLL, EXE и др.
  3. Скопируйте вложенные папки из папки C:\WINNT\Symbols\IIS4 в папку C:\WINNT\Symbols. При появлении запроса на перезапись файлов нажмите кнопку Да.
  4. Скопируйте символы в свои пользовательские библиотеки DLL, а все исправления, выпущенные после пакета обновления 6а (SP6a), – в папку C:\WINNT\Symbols\Dll.
  5. Скопируйте символы для своих пользовательских EXE-файлов в папку C:\WINNT\Symbols\Exe. Кроме того, от разработчиков следует получить файлы .pdb или.dbg и сохранить эти файлы в папке C:\WINNT\Symbols\Dll.
  6. Замените файлы .или .pdb, которые уже имеются в папке C:\WINNT\Symbols\Dll, версиями этих файлов из полученных исправлений.

    Примечание. Чтобы открыть пакеты исправлений, можно использовать архиватор Winzip последней версии. Символы можно извлечь из вложенной папки \Debug. Эта папка имеется в каждом самоустанавливающемся файле исправлений.
  7. Создайте переменную среды _NT_SYMBOL_PATH и установите для нее значение C:\WINNT\Symbols. Это может быть или системная переменная, или пользовательская переменная среды.
Загружать и устанавливать символы на серверы, отладка которых выполняется, не обязательно, но очень рекомендуется. Если загрузить и установить символы на сервер, полученный выходной файл будет для службы поддержки Майкрософт гораздо информативнее.

Дополнительные сведения о получении символов отладки см. в следующей статье базы знаний Майкрософт:
268343 Umdhtools.exe: использование Umdh.exe для поиска утечек памяти (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
Когда серверы будут настроены, можно запустить средство ADPlus в режиме сбоя. Этот режим описан в разделе «Основные сценарии использования средства ADPlus».


Основные сценарии использования средства ADPlus

В данном разделе описаны некоторые типичные сценарии, в которых может потребоваться запуск средства ADPlus.

Процесс остановлен или загружает процессор на 100%

В этом сценарии процесс может периодически потреблять 100% ресурсов процессора в течение продолжительного времени или неопределенно долго. Запустите ADPlus в режиме зависания, чтобы получить дамп памяти процесса или процессов, которые потребляют ресурсы процессора, после того, как проблема возникла. Например, используйте одну из таких команд:
ADPlus -hang -p 1896
Эта команда запускает ADPlus в режиме зависания и создает полный дамп памяти процесса, имеющего идентификатор 1896.

ADPlus -hang -pn myapp.exe
Эта команда запускает ADPlus в режиме зависания и создает полный дамп памяти всех процессов, имеющих имя Myapp.exe.

ADPlus -hang -iis -pn myapp.exe -o c:\temp
Эта команда запускает ADPlus в режиме зависания и создает файлы полного дампа памяти IIS, всех экземпляров Mtx.exe или Dllhost.exe и всех процессов с именем Myapp.exe. Затем файлы дампа памяти сохраняются в папке C:\Temp.
При запуске ADPlus в режиме зависания при 100%-ной загрузке процессора это средство создает файлы дампа памяти процесса или процессов, указанных в командной строке.

Примечание. В определенных ситуациях отладчик не сможет присоединиться к процессу в условиях 100%-ной загрузки или зависания. Если запустить ADPlus в режиме зависания после того, как эта проблема возникнет, файлы дампа памяти могут быть не созданы. В таких случаях отладчик лучше присоединить до того, как проблема возникнет. Для этого запустите ADPlus в режиме сбоя, используя один из указанных ниже синтаксисов.
ADPlus -crash -p 1896
Эта команда запускает ADPlus в режиме сбоя для процесса с идентификатором 1896. ADPlus ждет, пока не возникнет исключение или пользователь не нажмет сочетание клавиш CTRL+C в свернутом окне отладчика, чтобы создать файл дампа и отсоединить отладчик.

ADPlus -crash -pn myapp.exe
Эта команда запускает ADPlus в режиме сбоя для процесса с именем Myapp.exe. ADPlus ждет, пока не возникнет исключение или пользователь не нажмет сочетание клавиш CTRL+C в свернутом окне отладчика, чтобы создать файл дампа и отсоединить отладчик.

ADPlus -crash -iis -pn myapp.exe -o c:\temp
Эта команда запускает ADPlus в режиме сбоя для всех экземпляров процессов с именем Myapp.exe и Inetinfo.exe и для всех экземпляров Mtx.exe или Dllhost.exe. ADPlus ждет, пока не возникнет исключение или пользователь не нажмет сочетание клавиш CTRL+C в одном или нескольких свернутых окнах отладчика, чтобы создать файл (или файлы) дампа и отсоединить отладчик (или отладчики). ADPlus сохраняет файлы дампа памяти и файлы журнала в папке C:\Temp.
Затем, после того, как процесс зависнет или создаст 100%-ную загрузку процессора, пользователь может нажать CTRL+C в свернутом окне (или окнах) отладчика, которые создает ADPlus, чтобы отладчик мог создать файл (или файлы) дампа для процесса (или процессов).

Примечание. По умолчанию ADPlus создает записи дампа памяти только в том случае, когда пользователь нажимает CTRL+C. Это экономит место на диске. В этом сценарии может быть полезно настроить ADPlus для создания файла полного дампа памяти, когда пользователь нажмет сочетание клавиш CTRL+C. Для этого используется параметр –CTCF. Также часто бывает полезно записать файл журнала производительности или файл журнала системного монитора за период до возникновения 100%-ной загрузки процессора включительно. В этом файле журнала должны, как минимум, быть зарегистрированы следующие объекты с интервалом от 1 до 5 секунд:
  • Память
  • Процесс
  • Процессор
  • Система
  • Поток

Аварийное завершение процесса

В этом сценарии процесс может неожиданно аварийно завершиться. Запустите ADPlus в режиме сбоя, чтобы получить дамп памяти процесса или процессов, которые завершены аварийно, до того, как проблема возникла. Например, используйте одну из таких команд:
ADPlus -crash -iis
Эта команда запускает ADPlus в режиме сбоя и указывает ему присоединить отладчик CDB к процессу Inetinfo.exe и ко всем процессам Mtx.exe или Dllhost.exe, которые выполняются на компьютере. После этого ADPlus ожидает возникновения первого и второго экземпляров исключения. По умолчанию ADPlus сохраняет все файлы во вложенной папке папки установки, поскольку параметр -o отсутствует.

ADPlus -quiet -crash -iis -notify удаленный компьютер -o c:\temp
Эта команда запускает ADPlus в тихом режиме (без диалоговых окно, записывая все выходные данные в журнал событий) в режиме сбоя и указывает ему присоединить отладчик CDB к процессу Inetinfo.exe и ко всем процессам Mtx.exe или Dllhost.exe, которые выполняются на компьютере. Поскольку используется параметр -notify, отладчики уведомляют всех пользователей, зарегистрировавшихся на компьютере с именем удаленный компьютер, когда происходит сбой или когда отслеживаемый процесс завершается. Поскольку используется параметр -o, ADPlus помещает все выходные данные в папку C:\Temp. Если эта папка отсутствует, ADPlus создает ее.

ADPlus -crash -iis -o \\сервер\общая папка
Эта команда такая же, как предыдущая, только все выходные данные сохраняются на сетевом сервере. ADPlus создает новую вложенную папку в папке \\сервер\общая папка и присваивает этой вложенной папке имя локального компьютера. Поэтому при запуске ADPlus на веб-ферме каждый сервер фермы, на котором выполняется ADPlus, регистрирует данные в собственной уникальной папке \\сервер\общая папка. (Пользователю не нужно создавать уникальные папки для каждого сервера. ADPlus делает это автоматически.)
Примечание. Если ADPlus запускается в режиме сбоя из локальной консоли (не из удаленной командной оболочки, как описано в предыдущем разделе), пользователю следует оставаться зарегистрированным в консоли в течение всего сеанса отладки.

Предположим, например, что средство ADPlus запущено в режиме сбоя с параметром -iis для отслеживания IIS. При выходе пользователя из консоли копии Cdb.exe, которые выполняются в консоли (и другие работающие приложения), завершают работу. В результате отладка останавливается и отслеживаемый процесс завершается.

Чтобы избежать этой проблемы, можно блокировать сеанс консоли (нажав сочетание клавиш CTRL+ALT+DEL, и выбрав Блокировать компьютер) или запустить средство ADPlus из удаленной командной оболочки, для которой запланирована работа в автономном режиме (не требуется интерактивный вход в систему).

Дополнительные сведения о том, как запланировать автономную работу удаленной командной оболочки см. в разделе «Основные сценарии использования средства ADPlus: удаленный запуск в режиме сбоя».

Серверные приложения MTS или COM+ неожиданно завершают работу

Компоненты модели COM, которые выполняются в серверном приложении MTS или COM+, фактически выполняются как суррогатные процессы (Mtx.exe или Dllhost.exe). Свойства и параметры этих суррогатных процессов можно настроить с помощью MTS Explorer (для Windows NT 4.0) или с помощью оснастки Component Services Microsoft Management Console (MMC) (для Windows 2000, Windows XP и Windows Server 2003).

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

Кроме того, в MTS и COM+ используется режим failfast. Режим failfast – мера безопасности, предназначенная для завершения процессов MTS/COM+, которые создают необрабатываемые нарушения прав доступа.

По умолчанию режим failfast включен в приложениях MTS/COM+, которые создают необрабатываемые исключения нарушения прав доступа. В результате сбойное серверное приложение COM+ не может создать второй экземпляр исключения нарушения прав доступа (то есть оно завершает работу после создания первого экземпляра исключения нарушения прав доступа). По умолчанию для ADPlus настроено создание только мини-записи дампа памяти при возникновении первого экземпляра исключения нарушения прав доступа.

Для успешной отладки серверных приложений MTS/COM+ выполните следующие действия.
  1. Настройте для серверного приложения MTS/COM+ режим Не останавливать при ожидании.
  2. Используйте параметр FullOnFirst, чтобы создавать файлы полного дампа при возникновении первого экземпляра исключения.
  3. Запустите ADPlus в режиме сбоя и дождитесь сбоя приложения.
Примечание. Поскольку MTS и COM+ закрывают серверное приложение, а политика failfast не разрешает приложению создать второй экземпляр исключения, может быть получен только дамп памяти первого экземпляра исключения нарушения прав доступа.

Удаленный запуск в режиме сбоя

Существует много ситуаций, в которых необходимо запустить средство ADPlus в режиме сбоя с локального клиентского компьютера для отслеживания процесса, который неожиданно был завершен на одном или нескольких серверах фермы серверов. В ОС Windows 2000 это обычно выполняется с помощью службы терминалов Windows. Однако невозможно выполнять отладку приложений, которые выполняются на различных рабочих станциях в Windows NT 4.0 и Windows 2000. Поэтому ADPlus отключает функцию режима сбоя, когда обнаруживает, что работает в сеансе служб терминалов. Для устранения этой проблемы предоставьте общий доступ к удаленному серверу, используя служебную программу Remote.exe, создайте пакетный файл, который запускает командную оболочку на удаленном сервере, а затем запланируйте выполнение этого пакетного файла на целевом сервере с помощью команды AT. (Команда AT запускает командную оболочку в автономном режиме, как службу.) Затем удаленная командная оболочка подключается к локальной рабочей станции или клиентскому компьютеру, которые используют ту же служебную программу Remote.exe, которая использовалась для запуска командной оболочки.

Чтобы запустить удаленную командную оболочку на сервере с помощью команды AT, выполните следующие действия.
  • На удаленном сервере
    Предположим, что отладчики установлены в папке C:\Debuggers. Выполните указанные ниже действия.
    1. В папке C:\Debuggers создайте новый пакетный файл с именем Remoteshell.cmd.
    2. Добавьте в этот пакетный файл следующую строку:
      c:\debuggers\remote.exe /s "cmd.exe" remoteshell
    3. В консоли на сервере или в сеансе служб терминалов откройте новую командную оболочку и введите команду
      AT 15:00 c:\debuggers\remoteshell.cmd
      , где 15:00 – время на одну минуту позже текущего. Например, если текущее время 14:59, необходимо ввести 15:00.
    4. Подождите выполнения команды AT.
    5. В командной строке введите AT без параметров, чтобы убедиться, что задача выполнена без ошибок.
  • На локальном клиентском компьютере:
    Установите отладчики на локальный компьютер или (как минимум) копию служебной программы Remote.exe локально. (По умолчанию эта служебная программа устанавливается вместе с отладчиками в корневую папку установки).

    Предположим, что отладчики и служебная программа Remote.exe установлены в папке C:\Debuggers. Выполните указанные ниже действия.
    1. В командной строке выполните переход в папку C:\Debuggers.
    2. Введите следующую команду:
      remote.exe /c удаленный сервер remoteshell
      , гдеудаленный сервер – это имя удаленного сервера.
    3. Теперь ваша локальная командная оболочка подключена к удаленной командной оболочке, которая запущена на сервере, и все команды, которые вводятся на локальном компьютере, будут выполняться на удаленном сервере (команда DIR c:\ выводит списки содержимого диска С на удаленном сервере).
    4. Теперь в удаленной командной оболочке можно запустить средство ADPlus в режиме сбоя, как если бы оно запускалось локально из консоли. Однако следует использовать параметр -quiet, чтобы запретить вывод всех диалоговых окон, которые ADPlus создает по умолчанию. Если не использовать параметр -quiet, удаленная командная оболочка перестанет отвечать после того, как будет запущено средство ADPlus и не будет получен ответ а запрос. Если эта проблема возникнет, следует выйти из удаленной командной оболочки (Cmd.exe) на сервере, а затем запустить новый экземпляр.
    5. Чтобы отправить останов отладки (CTRL+C) процессу, который в данный момент удаленно отслеживается средством ADPlus в режиме сбоя, необходимо использовать служебную программу Breakin.exe. По умолчанию служебная программа Breakin.exe устанавливается вместе с отладчиками в корневую папку установки. Например, чтобы остановить отладку службы IIS (Inetinfo.exe), которая выполняется с идентификатором процесса 1975, введите в удаленной командной оболочке следующую команду:
      breakin.exe 1975
      Вместо этого можно использовать команду Kill.exe (файл находится в корневой папке отладчиков), чтобы завершить все процессы, отладка которых выполняется.

Дополнительная информация и известные проблемы

  • Как можно определить, собраны ли средством ADPlus сведения о сбое, или был ли завершен процесс, который отслеживается в режиме сбоя?

    Для этого существует несколько способов.
    • Используйте параметр -notify и убедитесь, что служба обмена сообщениями запущена на сервере, на котором выполняется отладка, и на клиентском компьютере, который получает уведомления.
    • Откройте в текстовом редакторе LOG-файл в выходной папке каждого процесса и прокрутите файл до конца. Найдите следующий текст:
           0:070> * -------- AutodumpPlus 4.01 finished running at: --------
           0:070> .time
           Debug session time: Mon Aug 06 15:25:15 2001
           System Uptime: 3 days 17:00:34 
           Process Uptime: 1 days 3:10:38 
           0:070> * -------------------------------------------------------
    • В выходной папке найдите все DMP-файлы, которые содержат фразу "__2nd_chance". Если эта фраза появляется в метке записи дампа памяти, процесс был завершен неожиданно.
    • В выходной папке найдите все DMP-файлы, которые содержат фразу "__Process_was_shutdown". Если эта фраза появляется в метке записи дампа памяти, процесс был завершен администратором или, если это приложение MTS/COM+, процесс был завершен после достижения предельного времени бездействия.
    • В выходной папке найдите все DMP-файлы, которые содержат фразу "__CTRL-C". Если эта фраза появляется в метке записи дампа памяти, то или библиотекой DLL, выполняемой в процессе, было создано исключение останова отладки, или кто-то нажал в консоли сочетание клавиш CTRL+C (или, если ADPlus выполняется удаленно, использовал команду Breakin.exe), чтобы остановить текущий сеанс отладки.
  • Для запуска ADPlus необходимо установить компоненты сервера сценариев Windows в системе. Загрузить сервер сценариев Windows можно на следующем веб-сайте Microsoft:
    http://msdn.microsoft.com/ru-ru/library/ms950396.aspx
    Примечание. Компоненты сервера сценариев Windows, возможно, уже установлены, если на компьютере установлены следующие продукты корпорации Майкрософт:
    • Microsoft Internet Explorer 5
    • Microsoft Office 2000
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual Studio 6.0
    • Microsoft Windows NT Option Pack
    • Microsoft Windows 2000
    • Microsoft Windows XP
    • Microsoft Windows Server 2003
    • Microsoft Windows Vista
  • Параметр -iis работает, только если установлены Internet Information Server (IIS) 4.0 или Internet Information Services (IIS) 5.0.x.
  • При запуске средства ADPlus в тихом режиме данные записываются в журнал событий.
  • Если используется параметр -o, указанный путь не должен содержать больше одной несуществующей папки. Например:
    1. Указано -o c:\temp1\temp2. Однако папки C:\Temp1 и \Temp2 не существуют.
    2. Средство ADPlus выведет сообщение о том, что папки не существуют и что ADPlus не создаст их.
    Если указать только -o c:\temp1, ADPlus создаст папку C:\Temp1, если она не существует, и сохранит все выходные файлы в этой папке. Если необходимо указать несколько вложенных папок и используется параметр -o, перед запуском ADPlus убедитесь, что все вложенные папки существуют.
  • В COM+ можно настроить серверный пакет для запуска в отладчике на вкладке Дополнительно в диалоговом окне Свойства этого пакета. Если включить параметр Запустить в режиме отладки, ADPlus не сможет присоединить отладчик CDB к процессу. По умолчанию одновременно к процессу может быть присоединен только один отладчик.
  • Когда из процесса, который анализируется средством ADPlus в режиме сбоя, выполняется удаленный вызов процедур (RPC) в другой процесс, который завершен (преднамеренно или неожиданно), файл журнала, создаваемый средством ADPlus для анализируемого процесса, может содержать одно или несколько из следующих исключений:
    Неизвестное исключение - код 80010105 (первый экземпляр)
    Неизвестное исключение - код 800706be (первый экземпляр)
    Неизвестное исключение - код 800706ba (первый экземпляр)
    Это типичные исключения. RPC создает эти исключения, когда вызов осуществляется из процесса, который отслеживается, в несуществующий или аварийно завершенный процесс.

    Кроме того, если ADPlus отслеживает процесс Inetinfo.exe, в журнале отладки ADPlus для этого процесса может появиться следующее исключение:
    Неизвестное исключение - код 800706bf (первый экземпляр)
    Это исключение обычно возникает после того, как IIS выполняет вызов внешнего веб-сайта (использующего высокий уровень изоляции), который завершается ошибкой. За ним могут последовать два экземпляра следующего исключения:
    Неизвестное исключение - код 800706ba (первый экземпляр)

Ссылки

Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
323478 Отладка в сеансе сервера терминалов невозможна (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 286350 - Последний отзыв: 29 июня 2009 г. - Revision: 10.3
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Information Services 6.0
  • Microsoft Internet Information Services version 5.1
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Windows NT 4.0
  • Microsoft Windows 2000 Standard Edition
  • Microsoft Windows XP Service Pack 2
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Windows Vista Enterprise
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
Ключевые слова: 
kbbug kbdebug kbhowto KB286350

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com