Dicas sobre como usar WDEB386

Traduções deste artigo Traduções deste artigo
ID do artigo: 72379 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

O depurador WDEB386 fornecido no Windows Software Development Kit (SDK) possui diversos recursos valiosos; Entretanto, ela também tem um número de defeitos. Este artigo descreve algumas das coisas que WDEB386 pode e não pode fazer e fornece algumas dicas de uso.

Mais Informações

Motivos para usar WDEB386

O depurador WDEB386 foi originalmente escrito como uma ferramenta interna da Microsoft para desenvolver e depurar a camada de modo avançado do Windows. Como tal, ele retém uma série dos recursos avançados que são necessários para depurar uma multitarefa, sistema de modo protegido. Ao mesmo tempo, a natureza baixo nível do ambiente de depuração pode ser complicado e confuso em muitas situações. No entanto, há várias situações onde esse depurador é particularmente útil ou até mesmo totalmente necessário, para diagnosticar problemas, como o seguinte:

  • Rastreamento por meio de baixo nível código CVW não irá rastrear
  • Exibindo a memória virtual/linear/física
  • Exibição avançada de dados de processador 386, tais como DTG, LDT, IDT e todo o PMODE registra
  • Rastreamento manipuladores de interrupção de hardware
  • Rastreamento terminate-and-stay-resident (TSR) programas ou drivers de dispositivo MS-DOS
  • Exibir o status de máquinas virtuais (VMs)
  • Monitorar todas as interrupções e exceções em modo Avançado
  • Desenvolvimento e depuração dispositivos virtuais (VxDs) para o modo Avançado
Isso não é uma lista completa; no entanto, ele deve servir para ilustrar algumas das situações onde o depurador WDEB386 normalmente pode ser usado.

Invade o depurador na inicialização

Uma opção de linha de comando que não foi mencionada no capítulo 9 do manual do "Microsoft Windows Software Development Kit Tools" é a opção /B. Especificar /B na linha de comando WDEB386 instrui o depurador para interromper a execução durante a inicialização do Windows. Esta opção não garante que o depurador irá interromper a execução na primeira instrução executar. Na verdade, o depurador não interromper a execução até após Windows tem Carregar VxDs, antes de ser inicialização.

Em geral invade o depurador

Quando WDEB386 está sendo executado, a execução do fluxo de instrução atual pode ser interrompida com a combinação de teclas CTRL + ALT + SYS RQ. Isso não interromperá a execução no local exato da interrupção de teclado; execução será interrompido em um local no Gerenciador de máquina virtual (VMM). O conteúdo do registrador da máquina virtual interrompida pode ser olhado usando o comando .VM (veja abaixo).

Como alternativa, os pontos de interrupção podem ser definidos com o comando BP, ou com instruções de interrupção montadas diretamente no código. Pode ser usada um INT 1 ou 3 INT instrução. A diferença é que um 1 INT irá produzir uma mensagem de "interrupção de rastreamento inesperado" e parar na instrução após a 1 INT. Esta mensagem não indica uma condição de erro e pode ser ignorada. O 3 INT será interromper diretamente o INT e não produzir a mensagem. Depois que uma instrução de ponto de interrupção é atingida, ele pode ser removido permanentemente com o comando "Z". Este comando substitui a linguagem de máquina INT NOPs (não operação).

Além disso, se o hardware necessário estiver disponível, a interrupção nonmaskable (NMI) pode ser usada para interromper o depurador. Isso geralmente significa ter um botão de "STOP" externo conectado a uma placa depuração instalada em um slot de máquina de desenvolvimento. Alguns computadores podem ter a capacidade de conexão com um botão do painel frontal da linha NMI no barramento de máquina. Em qualquer caso, usar NMI tem a vantagem de poder invadir um computador que tem "travado" com interrupções desabilitadas.

Para os programadores desenvolver drivers de dispositivo virtual (VxDs), a macro Debug_Out está disponível para combinar enviando uma seqüência de caracteres ASCII para a depuração terminal e executar um 1 INT, o que interromperá o depurador.

Usando WDEB386 no modo padrão

O depurador WDEB386 é fornecido principalmente para depuração de modo avançado; no entanto, ela também pode ser usada no modo padrão em um processador 386. Em geral, a operação do depurador WDEB386 no modo padrão é o mesmo como no modo avançado, exceto que uma série de recursos não está disponíveis, especialmente no Windows 3.0.

Por exemplo, o "/ b" opção para quebrar em inicialização só está disponível no modo avançado no Windows 3.0. Ele está disponível no modo padrão no Windows 3.1. Muitos dos comandos "ponto" (comandos prefixados com um ponto) são fornecidos para modo Avançado e não estão disponíveis no modo padrão.

Determinando o estado do processador

Depois que o controle tem sido fornecido para o depurador, o caractere de prompt usado irá fornecer o status de modo protegido do processador. A lista a seguir mostra quais caracteres prompts podem ser exibidos e o significado de cada:
    Character  Meaning
    ---------  -------

       >       The processor is in real mode
       #       The processor is in protected mode
       -       The processor is in virtual 8086 mode
				
o modo que o processador está no será uma boa indicação de que o código está sendo executado. Por exemplo, se o prompt é um "-" (hífen), o fluxo de instrução atual está em algum lugar no MS-DOS, o BIOS, ou possivelmente em um driver de dispositivo TSR ou MS-DOS. Isso ocorre porque a camada de modo avançado do Windows deve alternar o processador para o modo V86 para executar funções de MS-DOS ou BIOS. Como alternativa, se o prompt é um "#" (sinal numérico), código de modo protegido--que poderia ser um aplicativo baseado no Windows, DLL ou até mesmo a camada de modo avançado--está sendo executado.

Um dos aspectos mais importantes de "saber o que está em execução" ao usar WDEB386 em Windows em modo avançado é alguns consciência WIN386.EXE. Este módulo consiste em todos os VxDs (dispositivos virtuais) e o VMM (gerente de máquina virtual). Esses componentes são chamados com freqüência coletivamente para como camada de modo Avançado"," "tocar zero código" ou simplesmente "WIN386". Em Windows 3.0 e 3.1 e Windows para Workgroups, versões 3.0, 3.1 e 3.11, se o prompt de depurador é um "#" e o valor do registrador CS é 0028h, isso significa que a máquina está parada no WIN386.

Parar em WIN386 pode ou não ser desejável. Por exemplo, a capacidade de WDEB386 parar em WIN386 permite aos desenvolvedores VxD único-percorrer o VxD em questão. No entanto, um aplicativo ou o programador de driver de dispositivo usando WDEB386 devido a sua "consciência de modo protegido" não pode ter nenhum interesse no que está fazendo WIN386. Em qualquer caso, reconhecer o componente de sistema associado com o fluxo de execução atual é uma etapa crucial no uso WDEB386 com eficiência.

Usando os comandos do ponto

Provavelmente a parte mais interessante (e confusa) sobre como usar WDEB386 aborda os comandos "ponto", que são comandos precedidos por um período. Uma das causas da confusão é que a menos que a versão de depuração do WIN386.EXE é instalada, a maioria dos comandos ponto não está disponíveis. Por exemplo, se a seguinte mensagem é exibida enquanto o Windows está sendo executado em modo Avançado
Win386 não carregado, debug não versão ou não respondendo
Ele provavelmente significa que a versão comercial do WIN386.EXE é instalada. Para obter mais informações sobre como instalar a versão de depuração do WIN386, consulte as palavras:
prod(winddk) e wdeb386
Além disso, esta mensagem sempre será exibida se WDEB386 for usada quando o Windows está no modo padrão.

Comandos de despejo de ponto

Conceitualmente, os comandos de ponto são comandos "externos", ou comandos que operam sobre estruturas de dados e as operações específicas do ambiente do Windows. Por exemplo, o comando "D" (dump) exibe locais de memória como deve ser esperado de um depurador, mas o comando ".DG" exibe informações sobre heap global do Windows da mesma maneira como o aplicativo HEAPWALK.

A maioria dos comandos .dx não requerem a versão de depuração do WIN386.EXE e também está disponível em modo padrão. O restante dos comandos descritos neste artigo exigem a versão depuração de WIN386.EXE e avançada modo de operação. Depois que tudo o que é instalado corretamente, o ".?" comando de Ajuda deve fornecer uma referência rápida on-line dos comandos de ponto.

Uma distinção importante que deve ser feita é a diferença entre os comandos ".DS" e "K". O comando "K" examinará a pilha Windows, desde que o depurador está parado no aplicativo baseado no Windows ou código de biblioteca de vínculo dinâmico (DLL). No entanto, se o depurador é rastreamento por meio de código WIN386, o comando "K" não produzirá qualquer saída úteis. Por esse motivo, o comando ".DS" foi fornecido para exibir a pilha WIN386. Isso é outra demonstração da importância de "saber o que está sendo executado," como mencionado anteriormente neste artigo.

Comandos VM do ponto

WDEB386 foi projetado originalmente para depurar a camada de modo avançado do Windows; portanto, pode haver situações em que o depurador é interrompido no meio de WIN386. Por exemplo, se a execução é interrompida usando CTRL + ALT + SYS RQ, o computador não será paralisada imediatamente na instrução que estava sendo executado, mas em vez em um ponto de interrupção no código WIN386. Assim, os registradores gerais não normalmente contêm tudo o que será de qualquer uso para um desenvolvedor tentar depurar um aplicativo ou um driver.

No entanto, o status operacional da máquina virtual atual pode ser exibido usando os comandos .vx. Por exemplo, ".VM" irá exibir os sinalizadores de status, registrar conteúdo, instrução atual e uma parte da pilha da VM atual. Digitar ".VL" produzirá uma lista de todas as VMs no sistema. Esses comandos podem ser usados para obter uma visão geral do aplicativo, estado de execução de DLL, MS-DOS ou BIOS, como contrário para o estado de WIN386.

Comandos de memória do ponto

Os comandos .mx exibem informações avançadas sobre o estado de memória. Muitas das funções imprimir informações de WIN386 internas em um formato mais legível. Dois comandos que são imediatamente úteis são ".ML" e ".MP". Esses comandos Converter endereços de linear para físico e vice-versa.

Comandos de rastreamento de ponto

Os comandos ".T" e ".S" fornecem para manter informações de rastreamento de interrupção. As entradas de rastreamento descrevem quais interrupções ocorreram, o endereço de bloco VM e o endereço de instrução interrompida. Esses comandos podem ser extremamente útil para rastrear problemas (bugs) que não produzem sintomas imediatas.

Comandos de dispositivos de ponto

WIN386 e WDEB386 fornecem a capacidade para um VxD individual exibir informações sobre seu próprio estado operacional. Em geral, o usuário pode solicitar isso depuração informações de um VxD, digitando .nome no prompt de WDEB386, onde "nome" é o nome do VxD. Por exemplo, digitar .VDMAD produz informações sobre o estado do dispositivo virtual DMA.

Emitir um comando de dispositivo ponto fará com que o VMM enviar uma mensagem "Debug_Query" para o VxD. O VxD não é necessário fazer nada em resposta a esta mensagem e, na verdade VxDs muitos não produzem qualquer saída de depuração. Em geral, saída produzida por VxDs dessa maneira não documentada e somente é fornecida como um meio de depuração o VxD em questão. Os desenvolvedores VxD podem querer aproveitar esse mecanismo para exibir as estruturas de dados importantes que definem o estado do dispositivo virtual.

Resumo do comando de ponto

Os comandos de ponto são resumidos na seção 9,6 (página 9-48) do manual do "Microsoft Windows Software Development Kit Tools". Uma tela de referência rápida online está disponível com o ".?" comando.

Observação: Um número de comandos ponto não está documentado no manual de ferramentas do SDK. Por exemplo, o formato do comando de dispositivo ponto está descrito, mas a saída real produzida por dispositivos virtuais específicos não for fornecida. Há uma série de razões para isso:

  • A saída gerada pelos comandos ponto geralmente não é produzida pelo depurador WDEB386, mas em vez por componentes de WIN386. Esses componentes estão sendo revisado e atualizado mais dinamicamente que o depurador, e então informações produzidas por esses componentes provavelmente alterar.
  • A saída geralmente é muito específico sobre o VxD propriamente dito e não normalmente seria útil em uma situação típica de depuração.

Propriedades

ID do artigo: 72379 - Última revisão: quinta-feira, 22 de julho de 2004 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.0
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.1
Palavras-chave: 
kbmt KB72379 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 72379
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

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