Suggerimenti sull'utilizzo WDEB386

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.

72379
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
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.
WFW 3.00 3.10 3.11

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 72379 - Ultima revisione: 01/05/2015 03:58:33 - Revisione: 1.1

  • Microsoft Windows Device Development Kit (DDK) for Windows 3.0
  • Microsoft Windows Device Development Kit (DDK) for Windows 3.1
  • kbnosurvey kbarchive kbmt KB72379 KbMtit
Feedback