Suggerimenti sull'utilizzo WDEB386

Traduzione articoli Traduzione articoli
Identificativo articolo: 72379 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Il debugger WDEB386 fornito in Windows Software Development Kit (SDK) dispone di numerose funzionalitÓ estremamente utile; tuttavia, dispone anche una serie di difetti. In questo articolo vengono descritte alcune delle operazioni che WDEB386 possibile e non e fornisce alcuni suggerimenti di utilizzo.

Informazioni

Motivi per utilizzare WDEB386

Il debugger WDEB386 originariamente Ŕ stato scritto come uno strumento interno Microsoft per lo sviluppo e debug il livello di modalitÓ avanzata di Windows. Di conseguenza, viene mantenuta una serie delle funzionalitÓ avanzate necessarie eseguire il debug un multitasking, il sistema in modalitÓ protetta. Allo stesso tempo, la natura di basso livello di questo ambiente di debug pu˛ essere poco pratico e confusione in molte situazioni. Tuttavia, esistono molte situazioni in cui il debugger Ŕ particolarmente utile, o anche totalmente necessari diagnosticare i problemi come quello riportato di seguito:

  • Analisi mediante il codice a basso livello che non traccia CVW
  • Visualizzazione della memoria virtuale/lineare/fisico
  • Visualizzazione avanzata 386 i dati del processore, ad esempio il GDT LDT, IDT e tutte le PMODE registra
  • Analisi dei gestori di interrupt hardware
  • Analisi-stay-resident (TSR) programmi o driver di periferica MS-DOS
  • Visualizzazione dello stato delle macchine virtuali (VM)
  • Monitoraggio di tutti gli interrupt e le eccezioni in modalitÓ avanzata
  • Lo sviluppo e debug di periferiche virtuali (VxDs) per la modalitÓ avanzata
Questo non Ŕ un elenco completo, tuttavia, devono essere utilizzati per illustrare alcune delle situazioni in cui il debugger WDEB386 potrebbe essere in genere utilizzato.

Suddividere nel debugger all'avvio

Un'opzione della riga di comando non Ŕ stata menzionata nel capitolo 9 del manuale "Microsoft Windows Software Development Kit Tools" Ŕ l'opzione / b. Specificando/b nella riga di comando di WDEB386 indica al debugger di interrompere l'esecuzione durante l'avvio di Windows. Questa opzione non garantisce che il debugger verrÓ interrotta l'esecuzione l'istruzione di prima eseguita. In effetti, il debugger non interrompe l'esecuzione fino a quando non dopo che Windows Ŕ stato caricato vxd, immediatamente prima a inizializzazione.

Interruzione in debugger in generale

Quando WDEB386 Ŕ in esecuzione, l'esecuzione del flusso di istruzioni corrente pu˛ essere interrotta con la combinazione di tasti CTRL + ALT + SYS tasto. Non verrÓ interrotta l'esecuzione nella posizione precisa dell'interrupt della tastiera, l'esecuzione verrÓ interrotta in una posizione il gestore della macchina virtuale (VMM). Il contenuto del registro della macchina virtuale interrotta pu˛ essere esaminato utilizzando il comando .VM (vedere di seguito).

In alternativa, Ŕ possibile impostare i punti di interruzione con il comando BP o con istruzioni di interrupt raccolto direttamente nel codice. ╚ possibile utilizzare un INT 1 o 3 INT istruzione. La differenza Ŕ che un 1 INT verrÓ produrre un messaggio di "interrupt di traccia imprevisto" e l'interruzione sull'istruzione dopo 1 INT. Questo messaggio non indica una condizione di errore e pu˛ essere ignorato. 3 Un INT verrÓ interrompere direttamente su di INT e non creare il messaggio. Una volta che un'istruzione di punto di interruzione viene raggiunto, pu˛ essere rimosso in modo permanente con il comando "Z". Questo comando sostituisce il linguaggio macchina INT con NOPs (nessuna operazione).

Inoltre, se l'hardware necessario Ŕ disponibile, l'interrupt nonmaskable (NMI) utilizzabile per passare al debugger. Ci˛ significa in genere con un pulsante "STOP" esterno connesso a una scheda debug in uno slot di computer di sviluppo. Alcuni computer potrebbe essere la capacitÓ di connessione di un pulsante del pannello anteriore a riga NMI il bus del computer. In ogni caso, utilizzo NMI ha il vantaggio di poter suddividere in un computer che ha "bloccato" con gli interrupt disabilitati.

Per i programmatori lo sviluppo di driver di periferica virtuale (VxDs), la macro Debug_Out Ŕ disponibile per l'invio di una stringa ASCII a debug terminal e l'esecuzione di un 1 di INT, verrÓ interrotta nel debugger.

Utilizzo di WDEB386 in modalitÓ standard

Il debugger WDEB386 fornito principalmente per il debug in modalitÓ avanzata; tuttavia, Ŕ possibile inoltre essere utilizzato in modalitÓ standard su un processore 386. In generale, il valore di funzionamento del debugger WDEB386 in modalitÓ standard Ŕ lo stesso come in modalitÓ avanzata, ad eccezione del fatto che una serie di funzionalitÓ non disponibile, in particolare in Windows 3.0.

Ad esempio, il "/ b" opzione di avvio Ŕ disponibile in modalitÓ avanzata di Windows 3.0 solo. ╚ disponibile in modalitÓ standard in Windows 3.1. Molti dei comandi "dot" (comandi preceduti da un punto) vengono forniti per la modalitÓ avanzata e non si sono disponibili in modalitÓ standard.

Determinazione dello stato del processore

Dopo il controllo Ŕ stato assegnato al debugger, Ŕ necessario che il carattere di prompt utilizzato fornirÓ lo stato di modalitÓ protetta del processore. Seguenti elencate quali caratteri di prompt potrebbero essere visualizzati e il significato di ciascun:
    Character  Meaning
    ---------  -------

       >       The processor is in real mode
       #       The processor is in protected mode
       -       The processor is in virtual 8086 mode
				
il processore Ŕ modalitÓ sarÓ una buona indicazione di viene eseguito il codice. Ad esempio, se la richiesta Ŕ un "-" (trattino), il flusso di istruzioni corrente Ŕ in un punto qualsiasi in MS-DOS, il BIOS, o eventualmente in un driver di periferica programma TSR o MS-DOS. Infatti, il livello di modalitÓ avanzata di Windows necessario passare il processore V86 modalitÓ per eseguire funzioni di MS-DOS o del BIOS. In alternativa, se la richiesta Ŕ un "#" (cancelletto), codice modalitÓ protetta, potrebbe essere un'applicazione basata su Windows, DLL o anche il livello della modalitÓ avanzata, Ŕ in esecuzione.

Uno degli aspetti pi¨ importanti di "sapere ci˛ che Ŕ in esecuzione" quando si utilizza WDEB386 in Windows in modalitÓ avanzata di si alcuni consapevolezza dei WIN386.EXE. In questo modulo Ŕ costituito da VMM (virtual machine manager) e tutti i file vxd (periferiche virtuali). Questi componenti sono spesso collettivamente come "livello modalitÓ avanzata", "suoneria zero codice" o semplicemente "WIN386." In Windows 3.0 e 3.1 e Windows per Workgroup versioni 3.0, 3.1 e 3.11, se la richiesta di debugger Ŕ un "#" e il valore del registro CS Ŕ 0028h, significa che il computer viene arrestato in WIN386.

Arresto in WIN386 pu˛ o non essere auspicabile. Ad esempio, la possibilitÓ di WDEB386 per interrompere in WIN386 consente agli sviluppatori di VxD single-passaggio attraverso il VxD in question. Tuttavia, un'applicazione o il programmatore di driver di periferica utilizzando di WDEB386 causa del relativo "consapevolezza in modalitÓ protetta" non pu˛ avere alcun interesse in operazioni di WIN386. In ogni caso, il componente di sistema associato nel flusso di esecuzione corrente di riconoscimento Ŕ un passaggio fondamentale utilizzando WDEB386 in modo efficace.

Utilizzo dei comandi punto

Probabilmente la parte pi¨ interessante (e confusione) sull'utilizzo di WDEB386 riguarda i comandi "dot", che sono preceduti da un punto di comandi. Una delle cause della confusione Ŕ che a meno che non la versione di debug di WIN386.EXE sia installata, la maggior parte dei comandi punto non sono disponibili. Ad esempio, se viene visualizzato il messaggio seguente mentre Windows Ŕ in esecuzione in modalitÓ avanzata
Win386 non caricato, non il debug versione o non risponde
significa probabilmente che sia installata la versione finale di WIN386.EXE. Per ulteriori informazioni sull'installazione della versione di debug, di WIN386, eseguire una ricerca le parole:
Prod(winddk) e wdeb386
Inoltre, questo messaggio viene sempre visualizzato se WDEB386 viene utilizzato quando Windows Ŕ in modalitÓ standard.

Comandi dump punto

Dal punto di vista concettuale, i comandi di punto sono comandi "esterni" o i comandi che operano su strutture di dati e le operazioni specifiche per l'ambiente Windows. Ad esempio, il comando "D" (dump) consente di visualizzare posizioni di memoria come dovrebbe essere previsto da un debugger, ma il comando di ".DG" Visualizza informazioni di heap globale di Windows in modo analogo come applicazione HEAPWALK.

La maggior parte dei comandi .dx non richiedono la versione di debug di WIN386.EXE e sono inoltre disponibile in modalitÓ standard. La parte restante del comandi descritti in questo articolo richiede entrambi la versione di debug di WIN386.EXE e migliorate di modalitÓ. Una volta tutto ci˛ che Ŕ installato correttamente, il ".?" comando help deve fornire un riferimento rapido in linea dei comandi punto.

Deve essere eseguita una importante differenza Ŕ la differenza tra i comandi di ".DS" e "K". Il comando "K" illustrano lo stack di Windows, purchÚ il debugger viene arrestato in codice di libreria a collegamento dinamico (DLL) o di applicazione basata su Windows. Tuttavia, se il debugger Ŕ la traccia tramite il codice WIN386, il comando "K" non produrrÓ alcun output utili. Per questo motivo, Ŕ disponibile il comando ".DS" per visualizzare lo stack WIN386. Si tratta di un altro dimostrazione dell'importanza di "sapere ci˛ che Ŕ in esecuzione," come indicato in precedenza in questo articolo.

Comandi VM punto

WDEB386 Ŕ stato originariamente progettato per eseguire il debug il livello di modalitÓ avanzata di Windows; di conseguenza, vi pu˛ essere situazioni in cui il debugger viene interrotto al centro della WIN386. Ad esempio, se l'esecuzione viene interrotta mediante il tasto CTRL + ALT + SYS, il computer non comporta l'interruzione immediatamente con l'istruzione che era in esecuzione, ma piuttosto a un punto di interruzione nel codice WIN386. Di conseguenza, i registri generali non normalmente contengono tutto ci˛ che di qualsiasi utilizzo a uno sviluppatore tentando di eseguire il debug un driver o un'applicazione.

Tuttavia, Ŕ possibile visualizzare lo stato operativo della macchina virtuale corrente utilizzando i comandi .vx. ".VM" verrÓ ad esempio, visualizzare i flag di stato, registrare contenuto, istruzione corrente e una parte dello stack di VM corrente. Digitare ".VL" produrrÓ un elenco di tutte le macchine virtuali nel sistema. Tali comandi possono essere utilizzati per ottenere una panoramica dell'applicazione, stato esecuzione DLL, MS-DOS o BIOS, come invece allo stato di WIN386.

Comandi di memoria del punto

Il comando di .mx Visualizza informazioni dettagliate sullo stato della memoria. Molte delle funzioni di stampare interne le informazioni di WIN386 in un formato pi¨ leggibile. Due comandi che sono immediatamente utili sono ".ML" e ".MP". Questi comandi consente di convertire indirizzi da lineare in fisico e viceversa.

Punto analisi comandi

I comandi ".T" e ".S" forniscono per mantenere le informazioni di analisi interrupt. Le voci di traccia descrivono quali gli interrupt sono verificati, l'indirizzo del blocco VM e l'indirizzo dell'istruzione interrotta. Questi comandi possono essere estremamente utili per individuare problemi (bug) che non producono sintomi immediati.

Comandi di periferiche punto

WIN386 e WDEB386 offrono la possibilitÓ per un singolo VxD visualizzare informazioni sul proprio stato di funzionamento. In generale, l'utente pu˛ richiedere questo debug di informazioni da un VxD digitando .nome prompt WDEB386, dove "nome" Ŕ il nome del VxD. Ad esempio, digitare .VDMAD genera informazioni sullo stato della periferica virtuale DMA.

Comando della periferica punto causerÓ VMM per inviare un messaggio di "Debug_Query" il VxD. Il VxD non Ŕ indispensabile eseguire alcuna operazione in risposta a questo messaggio, e molti vxd non producono infatti alcun output di debug. In generale, output prodotto da vxd in questo modo non documentato e viene fornito unicamente come un mezzo per il debug il VxD in questione. Gli sviluppatori di VxD desideri sfruttare questo meccanismo per visualizzare strutture di dati importanti che definiscono lo stato della periferica virtuale.

Riepilogo comando punto

I comandi punto sono riepilogati nella sezione 9.6 (pagina 9-48) del manuale "Microsoft Windows Software Development Kit Tools". Una schermata di Guida in linea di riferimento rapido disponibile con il ".?" comando.

Nota: Un numero di comandi punto non documentato nel manuale di strumenti SDK. Ad esempio, il formato del punto periferica comando Ŕ descritto, ma non Ŕ specificato l'output prodotto da periferiche virtuali specifiche. Esistono motivi:

  • L'output prodotto dai comandi punto, in genere non viene generata dal debugger WDEB386, ma dal componenti di WIN386. Questi componenti sono venga rivisto e aggiornate in modo pi¨ dinamico pi¨ il debugger e pertanto le informazioni di prodotto da questi componenti sono soggette a modifica.
  • L'output Ŕ spesso il VxD stesso di informazioni molto specifiche e normalmente non sarebbe utile in una situazione tipica di debug.

ProprietÓ

Identificativo articolo: 72379 - Ultima modifica: giovedý 22 luglio 2004 - Revisione: 1.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.0
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.1
Chiavi:á
kbmt KB72379 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 72379
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Dichiarazione di non responsabilitÓ per articoli della Microsoft Knowledge Base su prodotti non pi¨ supportati
Questo articolo Ŕ stato scritto sui prodotti per cui Microsoft non offre pi¨ supporto. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.

Invia suggerimenti

 

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