Проверка символов отладки Windows

Поддержка для Windows Vista Пакет обновления 1 (SP1) завершается на 12 июля 2011 г. Чтобы продолжить получать обновления для системы безопасности для Windows, убедитесь, что вы используете Windows Vista с пакетом обновления 2 (SP2). Дополнительные сведения можно найти эту веб-страницу Майкрософт: заканчивается поддержка для некоторых версий Windows.

Аннотация

Символы отладки Windows должны быть проверены после запуска отладчика ядра (I386kd.exe | WinDBG.exe). отладчик может загружать и представлять запрос, но неправильные символы, соответствующие функции и переменные, которые приводит к результатам случайные будущих команды отладки не ссылаются. Ниже перечислены некоторые красные флаги и несколько методов для плашечных проверять правильность символов.

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

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

Содержание

  • Загрузка отладчик ядра

  • Проверка времени создания с помощью команды !drivers

  • Проверка времени создания с помощью Link.exe

  • Unassembling функция

  • Пакет обновления символы

Загрузка отладчик ядра

Нормальной нагрузке отладчика ядра отображает один из следующих запросов:

KD > однопроцессорной системе 0: kd > многопроцессорной системыПриведенный ниже запрос указывает, что файл символов для файла Ntoskrnl.exe неправильный. Проверьте соответствующие многопроцессорного или однопроцессорного ядра и HAL копируются в дереве символов. Пример:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]could not determine the current processor, using zeroKernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001*** Contents Deleted ***16kd> В первые несколько строк отображается при загрузке файла Memory.dmp, версия ядра, а также число процессоров отладчик ядра. Убедитесь, что соответствует число процессоров с соответствующим ядра и HAL. Сведения о драйвере символ отображается как либо символы загружены или отложена. Загрузка образца:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]Kernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001re-loading all kernel symbolsKD: unloading symbols for "ntoskrnl.exe"KD: deferring symbol load for "ntoskrnl.exe" at 80100000KD: Loaded (2248) fpo entries for image (ntoskrnl.exe)KD: "ntoskrnl.exe" loaded 4074 symbols (80100000-801bbb80)KD: loaded symbols for "ntoskrnl.exe"KD: deferring symbol load for "atapi.sys" at fc810000KD: deferring symbol load for "diskdump.sys" at fc800000KD: deferring symbol load for "hal.dll" at 80400000KD: deferring symbol load for "atapi.sys" at 80010000KD: deferring symbol load for "SCSIPORT.SYS" at 80013000KD: deferring symbol load for "Atdisk.sys" at 80001000KD: deferring symbol load for "Scsidisk.sys" at 8001b000KD: deferring symbol load for "Fastfat.sys" at 80372000Unable to read image header for Floppy.SYS at fc820000 - status c0000001*** Contents Deleted ***KD: deferring symbol load for "srv.sys" at fc9e0000KD: deferring symbol load for "ntdll.dll" at 77f80000finished re-loading all kernel symbolsNT!_PspUnhandledExceptionInSystemThread+0x18:80131ff8 b801000000 mov eax,0x1kd> Обратите внимание, что отладчик ядра была «Не удается прочитать заголовок изображения для Floppy.sys в fc820000 - c0000001 статус.» Это сообщение является нормальным, так как заголовок конкретного драйвера не находится в памяти.

Проверка времени создания с помощью команды !drivers

Использование ! драйверы команду для текущего списка драйверов, загруженных в память. Сделайте заметки дат и времени драйверов и ли они могут быть загружены. (Код и данные размеры столбцов в следующем примере удаляются по ширине статьи).kd> !driversBase Code Size Data Size Driver Name Creation Time80100000 Ntoskrnl.exe Fri May 26 18:18:36 199580400000 Hal.dll Thu May 11 13:54:18 199580010000 Atapi.sys Tue May 23 21:01:41 199580013000 Scsiport.sys Fri May 05 23:11:06 199580001000 Atdisk.sys Fri May 05 23:10:40 19958001b000 Scsidisk.sys Fri May 05 23:11:01 199580372000 Fastfat.sys Mon May 22 23:57:13 1995fc820000 Floppy.sys Header Paged Outfc830000 Scsicdrm.sys Wed May 10 21:57:03 1995fc840000 Fs_Rec.sys Header Paged Outfc850000 Null.sys Header Paged Outfc860000 Beep.sys Header Paged Outfc870000 I8042prt.sys Fri May 05 23:10:42 1995fc880000 Mouclass.sys Fri May 05 23:10:45 1995fc890000 Kbdclass.sys Fri May 05 23:10:44 1995fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995fc8a0000 S3.sys Fri May 19 21:18:06 1995fc8c0000 Vga.sys Fri May 05 23:10:10 1995fc8d0000 Msfs.sys Fri May 05 23:11:57 1995fc8e0000 Npfs.sys Fri May 05 23:11:40 1995fc900000 Ndis.sys Mon May 22 20:23:18 1995fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995fc940000 Tdi.sys Fri May 05 23:13:09 1995fc920000 Nbf.sys Mon May 08 15:00:47 1995fc950000 Netbios.sys Fri May 05 23:13:19 1995fc960000 Parport.sys Header Paged Outfc970000 Parallel.sys Header Paged Outfc980000 Serial.sys Fri May 05 23:11:20 1995fc990000 Afd.sys Header Paged Outfc9a0000 Rdr.sys Wed May 17 17:18:16 1995fc9e0000 Srv.sys Wed May 24 21:56:59 1995TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)kd> Обратите внимание, время создания файла, то есть дата, когда файл скомпилирован. Эта дата является ближе к Date\Time штампа на сам файл при просмотре Winnt\System32\Drivers вложенной папки с помощью диспетчера файлов. Подписка на Microsoft Developer Network (MSDN) и пакет драйвера устройства (DDK) для подтверждения DBG-файл, созданный при компиляции драйвера и тот же файл может использоваться программы Link.exe. «Дата штампа времени» в приведенном ниже примере соответствует «Создать время» Netbios.sys в приведенном выше примере. Используйте для проверки «Дата штампа времени» из DBG-файл Link.exe:

СВЯЗЬ - dump - заголовки \symbols\sys\netbios.dbgMicrosoft (R) COFF двоичных файлов версии сборщика 3.00.5270 авторские права (C) Корпорация Майкрософт 1992-1995. Все права защищены. Дамп файла Netbios.dbg

4944 подпись 0 флаги 14C 306 характеристики компьютера (i386)Штамп времени Дата 2FAAE94F 05 мая пятница 23:13:19 1995

8D0B контрольная сумма образа 10000 базовый размер изображения 70A0 изображения** Содержимое удалено ** Если ! драйверы команда создает строки, которые выглядят следующим образом, важной таблице в дампа поврежден. Анализ дампа не возможно.

Не удается прочитать DosHeader в 0583002a - 00000000 состояния не удается прочитать DosHeader в 0587002a - состояние 00000000 не удается прочитать DosHeader в 0588002a - состояние 00000000 не удается прочитать DosHeader в 058a002a - состояние 00000000 не удается прочитать DosHeader в 058c002a - состояние 00000000

Unassembling функция

Файлы символов включен отладчик ядра для ссылки по имени функции и глобальные переменные. Место проверки ряд unassembled функций, убедитесь, что они выглядят правильно. Многие функции, компилятор оптимизировать и не обязательно соответствуют в приведенных ниже примерах. Функции оптимизации компилятора идентифицируются FPO в скобки в имени функции. Функции обычно начинаются с либо «push ebp» или «mov eax, fs [000000000].» Базовые знания по машинный язык и опыт позволит один распознавать эти функции.

  • Список загруженных модулей x *!

  • Список символов для конкретного модуля (например, Ntoskrnl.exe). x nt! *

  • Выберите функцию для дизассемблирования, не компилятор оптимизирован. u NT! _NtUnlockFile

Хороший символы

kd> u NT!_NtUnlockFileu NT!_NtUnlockFileNT!_NtUnlockFile:80156bd8 64a100000000     mov     eax,fs:[00000000]80156bde 55               push    ebp80156bdf 8bec             mov     ebp,esp80156be1 6aff             push    0xff80156be3 68200d1080       push    0x80100d2080156be8 68304f1380       push    0x80134f3080156bed 50               push    eax80156bee 64892500000000   mov     fs:[00000000],espkd> 

Unassembly функция должна выглядеть текст выше; Однако unassembly не может быть изменен. Если unassembly выглядит правильно, можно предположить, что загружены символы правильно для этого модуля. Следующая unassembly начинается с «jnz NT! _NTUnlockFile + 0x22.» Очевидно, что в начале функции не загрузится с кодом инструкцию перехода. Еще раз проверьте дерево символов.

Неверные символы

kd> u NT!_NTUnlockFileu NT!_NTUnlockFileNT!_NtUnlockFile:801574a4 7520             jnz     NT!_NtUnlockFile+0x22 (801574c6)801574a6 6a00             push    0x0801574a8 8d45dc           lea     eax,[ebp-0x24]801574ab 50               push    eax801574ac 53               push    ebx801574ad ff356c361480     push    dword ptr [NT!_CcNoDelay+0x4 (8014366c)]801574b3 6a01             push    0x1801574b5 ff7508           push    dword ptr [ebp+0x8] 

Пакет обновления символы

Бывают случаи, когда трудно искомые символы с конкретной установки. В определенный момент времени службы могут быть добавлены, требующей копирования файлов с компакт-диск установки Windows, который копируются файлы, которые были обновлены с помощью пакета обновления. Не забудьте повторно установите пакет обновления и все диски поддержки сторонних после изменения настройки системы для копирования файлов с установочного компакт-диска Windows. Символы должны применяться в том же порядке, что и установки.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Чтобы найти ядра отладки как на серию статей, поиск на ключевое слово: debugref. Символ методики WinDBG 2.0.x В отладочной версии 2.0.x и выше отладчиков Microsoft, существуют дополнительные шаги проверки, которые могут быть использованы. Для получения дополнительных сведений обратитесь на следующий веб-узел корпорации Майкрософт:

Комплект для разработки драйверов

Нужна дополнительная помощь?

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×