Sugestões sobre a utilização do WDEB386

Traduções de Artigos Traduções de Artigos
Artigo: 72379 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

O depurador WDEB386 fornecido no Windows Software Development Kit (SDK) tem muitas funcionalidades inestimável; no entanto, também tem um número de falhas. Este artigo descreve algumas das acções que WDEB386 pode e não é possível efectuar e fornece algumas sugestões de utilização.

Mais Informação

Razões para utilizar WDEB386

O depurador WDEB386 foi escrito originalmente como uma ferramenta interna da Microsoft para desenvolver e depurar a camada de modo avançado do Windows. Como tal, mantém um número das funcionalidades avançadas que são necessários para depurar uma multitarefa, o sistema de modo protegido. Ao mesmo tempo, a natureza de baixo nível neste ambiente depuração pode ser unwieldy e confuso em muitas situações. No entanto, existem muitas situações em que este depurador é particularmente útil ou totalmente mesmo necessário, para diagnosticar problemas, tais como:

  • Rastrear através do código de baixo nível que CVW não irá analisar
  • Memória virtual/linear/físico de visualização
  • Visualização avançada 386 dados do processador, tais como o GDT LDT IDT e todas a PMODE regista
  • Rastreio processadores de interrupção de hardware
  • Rastreio terminate-and-stay-resident (TSR) programas ou controladores de dispositivo do MS-DOS
  • Apresentar o estado de máquinas virtuais (VMs)
  • Monitorizar todas as interrupções e excepções em modo avançado
  • Desenvolver e depurar dispositivos virtuais (VxDs) para o modo avançado
Isto não é uma lista exaustiva; no entanto, que deve servir ilustram algumas das situações em que o depurador WDEB386 normalmente pode ser utilizado.

Dividir em Debugger no arranque

Uma opção da linha de comandos que não foi mencionada no capítulo 9 do manual "Microsoft Windows Software Development Kit Tools" é a opção/b. Especificar/b na linha de comandos WDEB386 indica o depurador para parar a execução durante o arranque do Windows. Esta opção não garante que o depurador irá parar a execução na instrução primeira executar. Na realidade, o depurador não parar a execução até depois do Windows carregou vxd, apenas antes a inicialização.

Dividir no depurador em geral

Quando WDEB386 está em execução, pode ser interrompida execução da sequência de instruções actual com a combinação de teclas tecla CTRL + ALT + SYS RQ. Esta não irá interromper a execução na localização precisa da interrupção de teclado; irá parar a execução numa localização no Gestor de máquina virtual (VMM). O conteúdo do registo da máquina virtual da interrompida pode ser inspeccionado utilizando o comando .VM (ver abaixo).

Em alternativa, pontos de interrupção podem ser definidos com o comando com o BP ou com instruções de interrupção reunidas directamente o código. Pode ser utilizada um INT 1 ou 3 INT instrução. A diferença é que um 1 INT irá produzir uma mensagem de "interrupção rastreio inesperado" e parar na instrução após o INT 1. Esta mensagem não indica uma condição de erro e pode ser ignorada. 3 Um INT irá quebrar directamente no INT e não produzir a mensagem. Depois de premir uma instrução de ponto de interrupção, 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 utilizada para dividir no depurador. Isto normalmente significa ter um botão de "STOP" externo ligado a uma placa de depuração instalada numa ranhura do computador de desenvolvimento. Alguns computadores podem ter a capacidade de ligar um botão do painel frontal para a linha NMI no barramento de máquina. Em qualquer dos casos, a utilização de NMI tem a vantagem de ser capaz de dividir num computador que tem "desligado" com interrupções desactivadas.

Para programadores de desenvolvimento de controladores de dispositivos virtuais (VxDs), a macro Debug_Out está disponível para combinar enviar uma cadeia ASCII para a depuração terminal e executar um 1 INT, que serão interrompidas para o depurador.

Utilizar WDEB386 no modo padrão

O depurador WDEB386 é fornecido principalmente para depuração de modo avançado; no entanto, também podem ser utilizado no modo padrão num processador 386. Em geral, a operação de depurador WDEB386 no modo padrão é o mesmo como em modo avançado, excepto que um número de funcionalidades indisponível, especialmente no Windows 3.0.

Por exemplo, o "/ b" opção de quebra no arranque só está disponível em modo avançado no Windows 3.0. Está disponível no modo padrão no Windows 3.1. Muitos dos comandos "dot" (for antecedidos de um período de comandos) são fornecidos para modo avançado e não estão disponíveis no modo normal.

Determinar o estado do processador

Depois de atribuído controlo para o depurador, o carácter de linha de comandos utilizado fornecerá o estado de modo protegido do processador. A lista seguinte mostra os caracteres de linha de comandos poderão ser apresentados 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 processador está no modo será uma boa indicação do código está a ser executado. Por exemplo, se o pedido é uma "-" (hífen), a sequência de instruções actual é algures no MS-DOS, o BIOS ou possivelmente um controlador de dispositivo programa TSR ou MS-DOS. Isto acontece porque a camada de modo avançado do Windows tem de mudar o processador para o modo V86 para executar funções do MS-DOS ou do BIOS. Em alternativa, se o pedido é um "#" (cardinal), código de modo protegido--que pode ser uma aplicação baseada no Windows, DLL ou mesmo a camada de modo avançado--está em execução.

Um dos aspectos mais importantes de "saber o que está em execução" quando utilizar WDEB386 no Windows em modo avançado alguns consciência do WIN386.EXE. Este módulo é constituído por VMM (virtual machine manager) e todos os VxDs (dispositivos virtuais). Estes componentes são colectivamente frequentemente referidos como a camada de modo avançado"," "toque zero código," ou apenas "WIN386". Em Windows 3.0 e 3.1 e Windows for Workgroups, versões 3.0, 3.1 e 3.11, se o pedido de depurador é um "#", sendo o valor de registo CS 0028h, significa que o computador é parado em WIN386.

Parar de WIN386 pode ou não ser desejável. Por exemplo, a capacidade de WDEB386 parar em WIN386 permite aos programadores VxD único passo através de VxD em questão. No entanto, uma aplicação ou programador de controlador de dispositivo utilizando WDEB386 devido do respectivo "detecção de modo protegido" pode ter sem juros no que WIN386 está a fazer. Em qualquer dos casos, a reconhecer o componente de sistema associado com a sequência de execução actual é um passo crucial utilizando WDEB386 eficazmente.

Utilizar os comandos de ponto

Provavelmente a parte mais interessante (e confusa) sobre como utilizar WDEB386 disser respeito aos comandos "dot", que são precedidos por um período de comandos. Uma das causas da confusão é maior que a menos que a versão de depuração do WIN386.EXE esteja instalada, parte dos comandos ponto não estão disponíveis. Por exemplo, se é apresentada a seguinte mensagem enquanto o Windows está em execução em modo avançado
Win386 não carregado, depurar não versão ou não responder
provavelmente significa que está instalada a versão de revenda de WIN386.EXE. Para obter mais informações sobre como instalar a versão de depuração do WIN386, consulta as palavras:
Prod(winddk) e wdeb386
Além disso, esta mensagem aparecerá sempre se WDEB386 é utilizado quando o Windows está em modo padrão.

Comandos de informação de ponto

Conceptualmente, os comandos de ponto são comandos "externos" ou comandos que operam sobre estruturas de dados e as operações específicas para o ambiente do Windows. Por exemplo, o comando "D" (informações de estado) mostra localizações de memória como deverá ser previsto a partir de um depurador, mas o comando ".DG" apresenta informações de memória global do Windows muito da mesma forma como a aplicação HEAPWALK.

A maior parte dos comandos .dx não requerem a versão de depuração do WIN386.EXE e também está disponíveis em modo padrão. Os restantes comandos descritos neste artigo requerem a versão depuração do WIN386.EXE e melhoradas modo de operação. Quando tudo estiver instalado correctamente, o ".?" comando help deve fornecer uma referência online rápida dos comandos ponto.

Uma distinção importante que deve ser efectuada é a diferença entre os comandos ".DS" e "K". O comando "K" irá guiá-lo a pilha do Windows desde que o depurador está parado numa aplicação baseada no Windows ou código de biblioteca de ligação dinâmica (DLL). No entanto, se o depurador é rastreio através de código WIN386, o comando "K" não produzirá nenhuma saída úteis. Por este motivo, o comando ".DS" foi fornecido para apresentar a pilha WIN386. Este é outra demonstração de importância de "saber o que está a ser executado," como foi mencionado anteriormente neste artigo.

Ponto VM comandos

WDEB386 foi originalmente concebido para depurar a camada de modo avançado do Windows; por conseguinte, poderão existir situações em que o depurador está parado no meio de WIN386. Por exemplo, se a execução é interrompida utilizando a tecla CTRL + ALT + SYS RQ, o computador não irá parar imediatamente na instrução que estava em execução, mas em vez no ponto de interrupção no código WIN386. Deste modo, os registos gerais não normalmente contêm tudo o que será de utilização para um programador tentar depurar um controlador ou uma aplicação.

No entanto, pode ser apresentado o estado operacional da máquina virtual da actual utilizando os comandos .vx. Por exemplo, ".VM" irá apresentar os sinalizadores de estado, registar o conteúdo, a instrução actual e uma parte da pilha da VM actual. Escrever ".VL" irá produzir uma lista da VM no sistema. Estes comandos podem ser utilizados para obter uma descrição geral da aplicação, DLL, MS-DOS ou BIOS estado de execução, por oposição ao estado do WIN386.

Comandos de memória de ponto

Os comandos .mx apresentam informações avançadas sobre o estado da memória. Muitas das funções imprimir interno informações de WIN386 num formato mais legível. Dois comandos que são imediatamente úteis são ".ML" e ".MP". Estes comandos converter endereços de linear para física e vice-versa.

Comandos de rastreio de ponto

Os comandos ".T" e ".S" fornecem para manter informações de rastreio de interrupção. Os movimentos de rastreio descrevem as interrupções ter ocorrido, o endereço de bloco VM e o endereço da instrução interrompida. Estes comandos podem ser extremamente úteis para controlar problemas (erros) que não produzem sintomas imediatas.

Comandos de dispositivos de ponto

WIN386 e WDEB386 fornecem a capacidade de um VxD individual apresentar informações sobre o respectivo estado a funcionar. Em geral, o utilizador pode pedir este depuração informações de um VxD escrevendo .Name linha de comandos WDEB386, onde "nome" é o nome do VxD. Por exemplo, escrever .VDMAD produz informações sobre o estado do dispositivo virtual DMA.

Emitir um comando de dispositivo ponto causará VMM enviar uma mensagem "Debug_Query" para o VxD. O VxD não é necessário fazer nada em resposta a esta mensagem e, na realidade VxDs muitos não produzem qualquer saída de depuração. Em geral, saída produzida por VxDs deste modo não está documentada e é apenas fornecida como um meio de depuração VxD em questão. Os programadores VxD poderá tirar partido este mecanismo para apresentar as estruturas de dados importantes que definem o estado do dispositivo virtual.

Resumo dos comandos ponto

Os comandos de pontos são resumidos na secção 9.6 (página 48 9) do manual "Microsoft Windows Software Development Kit de ferramentas". Um ecrã de referência rápida online está disponível com o ".?" comando.

NOTA: Um número de comandos ponto não está documentado no manual de ferramentas do SDK. Por exemplo, o formato do comando dispositivo ponto descrito mas não é fornecida a saída produzida por dispositivos virtuais específicos. Existem várias razões para esta situação:

  • A saída produzida por comandos ponto normalmente não é produzida pelo depurador WDEB386, mas em vez por componentes do WIN386. Estes componentes estão a ser revisto e actualizado mais dinamicamente do que o depurador e por isso, as informações produzidas por estes componentes estão, provavelmente alterar.
  • O resultado é muitas vezes informações muito específicas sobre o VxD próprio e normalmente não é útil numa situação típica depuração.

Propriedades

Artigo: 72379 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 72379
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

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