Como verificar se os símbolos de depuração do Windows

Suporte para Windows Vista Service Pack 1 (SP1) termina de 12 de Julho de 2011. Para continuar a receber actualizações de segurança para o Windows, certifique-se de que está a executar o Windows Vista com Service Pack 2 (SP2). Para mais informações, consulte esta página web da Microsoft: está a acabar o suporte para algumas versões do Windows.

Resumo

Os símbolos de depuração do Windows devem ser verificados depois de iniciar o depurador do kernel (I386kd.exe | Windbg.exe). O depurador pode carregar e apresentar uma linha de comandos, mas se os símbolos estiverem incorrectos, comandos de depuração futuros não referência correctas funções e variáveis, que conduza a resultados esporádico. Listados abaixo estão alguns sinalizadores vermelhos e alguns métodos de controlo de validade dos símbolos.

Mais Informações

Este artigo pressupõe que o depurador do kernel está em execução e tiver carregado um ficheiro Memory dmp ou estiver ligado a um computador remoto. Comandos apresentados não estão totalmente documentados e são apresentados apenas de excertos da produção.

Conteúdo do artigo

  • Carregar o depurador do Kernel

  • Verificar a hora de criação com! controladores

  • Utilizar Link.exe para verificar a hora de criação

  • Unassembling uma função

  • Símbolos do Service Pack

Carregar o depurador do Kernel

Uma carga normal do depurador do kernel apresenta um dos seguintes pedidos:

valor de Kd > sistema de processador único 0: kd > sistema multiprocessadorA linha de comandos mostrada abaixo indica que o ficheiro de símbolos para o ficheiro Ntoskrnl.exe está incorrecto. Verifique para se certificar de que o kernel multiprocessador ou uniprocessador adequado e a HAL são copiados para a árvore de símbolo. Exemplo: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> Quando o depurador do kernel carrega o ficheiro Memory dmp, a versão do Kernel, bem como a contagem de processador é apresentada nas primeiras linhas. Confirme que a contagem de processador corresponde ao kernel adequado e HAL. Informações sobre controladores do símbolo é apresentado como quer os símbolos são carregados ou diferidos. Carga de exemplo: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> Tenha em atenção que o depurador do kernel foi "Não é possível ler o cabeçalho de imagem para Floppy.sys a fc820000 - c0000001 de estado". Esta mensagem é normal uma vez que o cabeçalho de controlador específico não está actualmente na memória.

Verificar a hora de criação com! controladores

Utilizar o ! controladores comando para listar os controladores actualmente carregados na memória. Tornar nota das datas e horas dos controladores e se é ou não pôde ser carregados. (As colunas de tamanho do código e tamanho dos dados no seguinte exemplo são removidas para se ajustar a largura do artigo.)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> Tenha em atenção a hora de criação do ficheiro, que é a data que o ficheiro é compilado. Quando visualizar a subpasta Winnt\System32\Drivers utilizando o Gestor de ficheiros, esta data é perto da marca de Date\Time no ficheiro real. Se subscrever a Microsoft Developers Network (MSDN) ou se tiver o Windows dispositivo Driver Kit (DDK), a ferramenta de Link.exe pode ser utilizada para confirmar que o ficheiro de Dbg é o mesmo ficheiro que foi criado quando o controlador foi compilado. O "tempo carimbo de data" no exemplo abaixo corresponde a "Criar"tempo de Netbios.sys na saída acima. Utilize Link.exe para a verificação "data" do ficheiro Dbg:

HIPERLIGAÇÃO - dump - \symbols\sys\netbios.dbg cabeçalhosMicrosoft (R) COFF ficheiro binário Dumper versão 3.00.5270 Copyright (C) Microsoft Corp 1992-1995. Todos os direitos reservados. Informações de estado do ficheiro Netbios.dbg

assinatura 4944 0 sinalizadores 306 características do 14º C máquina (i386)Carimbo de data de tempo de 2FAAE94F Fri 05 de May 23:13:19 de 1995

8D0B checksum de imagem 10000 base do tamanho de 70A0 de imagem da imagem* * Conteúdo eliminado * * se o ! controladores comando produz quaisquer linhas que se parecem com o seguinte, uma tabela de importante a informação de estado está danificada. Análise suplementar da informação de poderá não ser possível.

Impossível ler DosHeader a 0583002a - Estado 00000000 Impossível ler DosHeader a 0587002a - Estado 00000000 Impossível ler DosHeader a 0588002a - Estado 00000000 Impossível ler DosHeader a 058a002a - Estado 00000000 Impossível ler DosHeader a 058c002a - Estado 00000000

Unassembling uma função

Os ficheiros de símbolos permitem ao depurador de kernel fazer referência a funções e variáveis globais pelo nome. Local Consulte algumas das funções constituindo para se certificar de que parecem correctas. Muitas funções são compilador optimizada e não são necessariamente conformes com os exemplos abaixo. Funções de compilador optimizado são identificadas por Positioning parênteses no nome da função. Funções normalmente começam com qualquer um dos ebp"emissão" ou "mov eax, fs [000000000]." Conhecimentos básicos de linguagem máquina e de experiências irão permitir que um utilizador reconhecer estas funções.

  • Lista os módulos carregados x *!

  • Símbolos de lista para um módulo específico (por exemplo, Ntoskrnl.exe). x nt! *

  • Seleccione uma função para desassemblar, ou seja, não o compilador optimizado. u NT! _NtUnlockFile

Símbolos de boas

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> 

O unassembly da função deve ser semelhante ao texto acima; No entanto, o unassembly está sujeito a alterações. Se o unassembly lhe parecer correcta, pode assumir que os símbolos carregou correctamente para este módulo. A unassembly seguinte começa com "jnz NT! _NTUnlockFile + 0x22." Obviamente, o início de uma função não seria iniciado com um código de instrução salto. Verifique novamente a árvore de símbolo.

Símbolos incorrectos

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] 

Símbolos do Service Pack

Existem alturas em que é difícil fazer corresponder os símbolos com uma instalação especial. Em algum momento no tempo, um serviço pode ter sido adicionado que necessários para copiar ficheiros da instalação do CD-ROM Windows, que substitui ficheiros que foram actualizados com um service pack. Certifique-se de que aplique novamente o service pack e todos os discos de suporte de outros fabricantes, depois de alterar a configuração do sistema, que copia ficheiros do CD-ROM de instalação do Windows. Os símbolos devem ser aplicados pela mesma ordem em que a instalação.

OBTER INFORMAÇÕES ADICIONAIS

Para localizar a série de Kernel Debug como a dos artigos, procure a palavra-chave: debugref. Técnicas de símbolo WinDbg 2.0 Na versão de depurador 2.0 e superior de Debuggers a Microsoft existem passos de verificação do símbolo adicional que podem ser utilizados. Para mais informações, consulte o seguinte Web site da Microsoft:

Kit de desenvolvimento de controladores

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×