Note sulla versione

Logo WinDbg con una lente di ingrandimento che controlla i bit.

Questo argomento fornisce informazioni sulle novità di WinDbg. Le versioni precedenti sono state rilasciate come WinDbg Preview.

1.2409.17001.0

Correzioni per l'accessibilità

Sono stati risolti diversi problemi durante l'interazione con WinDbg usando un'utilità per la lettura dello schermo.

Correzioni di bug

  • Correzione del problema per cui la disinstallazione di WinDbgX impedisce l'avvio di WinDbg classico.
  • È stato risolto un problema per cui WinDbgX verrà ridimensionato dopo la visualizzazione durante l'avvio.

Debug del tempo di viaggio (TTD)

  • Aggiornato alla versione 1.11.429.
  • Per altri dettagli, vedere Note sulla versione di TTD.

1.2407.24003.0

Nuove funzionalità

Nuovo provider di script JavaScript

Viene ora distribuito un nuovo provider JavaScript compatibile con le versioni precedenti basato su V8. Di conseguenza, gli host arm64 possono ora usare le estensioni JavaScript. L'interfaccia utente arm64 ora usa anche il motore arm64.

Il nuovo provider è abilitato per impostazione predefinita in tutte le architetture. In x86 e x64 può essere attivato/disattivato tramite i .veighton comandi e .veightoff . A un certo punto in futuro, questi comandi e il provider JavaScript legacy verranno rimossi.

Le estensioni del debugger con manifesti della raccolta di estensioni possono ora aggiungere icone alla nuova scheda Estensioni della barra multifunzione WinDbg. Facendo clic su queste icone verrà attivata una visualizzazione di una determinata query del modello di dati. Questo mezzo di estendibilità viene ottenuto tramite l'aggiunta di visualizzazioni al manifesto della raccolta di estensioni. Una vista associa un accoppiamento di un nome e un'icona a una query e a un tipo di visualizzazione del modello di dati. La documentazione è disponibile nella documentazione del manifesto della raccolta di estensioni

È ora possibile caricare in modo condizionale un'estensione della raccolta in base a valori di parametro di eccezione specifici. Per informazioni dettagliate, vedere La documentazione del manifesto della raccolta di estensioni .

Opzione di configurazione per non scaricare mai simboli specifici

È ora possibile ignorare il download dei simboli per le immagini specificate.

Symbols Nella sezione del file di DbgX.xml configurazione è possibile aggiungere un elenco di simboli:

<Namespace Name="DisabledSymbolsDownload">
  <Setting Name="MSEdge.dll" Type="VT_BSTR" Value=""></Setting>
</Namespace>

Nel debugger è possibile eseguire dx Debugger.Settings.Symbols.DisabledSymbolsDownload per visualizzare l'elenco corrente di simboli non scaricati.

È anche possibile modificare l'elenco direttamente dal debugger in questo modo:

dx @$curprocess.Modules[1].DisableSymbolDownload()
dx @$curprocess.Modules[1].EnableSymbolDownload()

Per facilitare il debug dei problemi relativi al download delle origini in base a SourceLink incorporato, è ora possibile usare il comando !lmsourcesinfo module per visualizzare il contenuto di SourceLink che verrà usato dal debugger.

Miglioramenti generali dell'interfaccia utente

Sono stati apportati alcuni piccoli miglioramenti alle finestre, ad esempio la finestra dei moduli o la finestra dello stack:

  • È ora possibile ordinare le visualizzazioni griglia facendo clic sulla colonna di intestazione.
  • Sono disponibili altre azioni di clic con il pulsante destro del mouse.
  • La finestra stack mostra i frame come inlined quando appropriato.

Correzioni di bug

  • È stato risolto un problema per cui i PDB di dimensioni superiori a 4 GB non vengono scaricati tramite HTTP.
    • Edge è un esempio di PDB di questo tipo.
  • Correzione del problema di memorizzazione nella cache nel provider di credenziali del debugger (ora memorizza nella cache le credenziali per sito).
  • Correzione di bug durante la valutazione dei trigger di caricamento della raccolta di estensioni.
  • Correzione di un bug con !address che potrebbe causare un arresto anomalo.
  • !heap -a -a dovrebbe funzionare ora.

TTD

Vedere Note sulla versione TTD per la versione 1.11.410.

1.2402.24001.0

Nuove funzionalità

Debug di Live Linux

È ora possibile eseguire il debug di un processo Linux in tempo reale. Per altre informazioni, consultare i seguenti argomenti:

Debug di processi remoti live linux

Simboli e origini Linux

Il client WinDbg per il prossimo futuro richiederà comunque Windows, perché WinDbg non viene eseguito in Linux.

Registrare un sottoinsieme di esecuzione con il debug di viaggi temporali

È ora possibile specificare un elenco di moduli da registrare per CONCENTRARSI sul TTD sui moduli di cui si è a cui si è occupati. Ciò può ridurre notevolmente il sovraccarico di registrazione. Per usare questo comando, selezionare semplicemente "Record subset of execution" nella finestra di dialogo "Configura e registra", quindi specificare i moduli da registrare. Vedere i problemi noti seguenti.

Per un controllo più preciso, è possibile registrare con precisione il programma usando una nuova API di registrazione in-process. Vedere come usare il codice di esempio e la documentazione.

Finestra Registro compatto

La nuova finestra del registro è simile all'output del r comando. Si noti che la modifica dalla nuova finestra del registro non è ancora supportata.

Nuovi parametri per e (immettere valori) nei comandi di memoria

I e comandi (Immetti valori) in memoria supportano ora indirizzi fisici esattamente come i d comandi (Memoria di visualizzazione). Si noti che queste opzioni sono supportate solo in modalità kernel:

Opzione Descrizione
/p Usa gli indirizzi di memoria fisica per la visualizzazione. L'intervallo specificato da Range verrà ricavato dalla memoria fisica anziché dalla memoria virtuale.
/p[c] Uguale a /p, ad eccezione del fatto che la memoria memorizzata nella cache verrà letta. Le parentesi quadre intorno a c devono essere incluse.
/p[uc] Uguale a /p, ad eccezione del fatto che la memoria non memorizzata nella cache verrà letta. Le parentesi quadre intorno all'uc devono essere incluse.
/p[wc] Uguale a /p, ad eccezione del fatto che la memoria combinata in scrittura verrà letta. Le parentesi intorno a wc devono essere incluse.

Per altre informazioni, vedere e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Enter Values).

Correzioni di bug

  • Supporto per la demangling dei nomi Rust nel debug linux
  • Miglioramenti al debug CLR
    • Aggiungere la possibilità di forzare i fotogrammi CLR in modalità mista
      • Aggiunta dell'impostazione ForceMixedModeStackWalker aggiunta a config.xml o DbgX.xml.
      • Aggiunta !forceclrmixedmodeunwind del comando per le indagini occasionali o se non è possibile modificare l'impostazione di configurazione.
  • Miglioramenti generali del debug CLR in Linux
  • Risolvere alcuni problemi relativi alle variabili LinuxKernel.js e per CPU
    • Aggiunta !runq del comando a LinuxKernel.js per poter eseguire il dump delle code di esecuzione dell'utilità di pianificazione del kernel per CPU (simile nel formato al comando dell'utilità di arresto anomalo di runq Linux)
    • Correzione di vari comandi in LinuxKernel.js per corrispondere alle modifiche del kernel: in kernel più recenti, l'albero timer usa nodi RB memorizzati nella cache anziché nodi RB non elaborati; nei kernel più recenti, l'elenco di all_bdevs è andato, quindi i dispositivi bloccati vengono ora visualizzati dal superblock (blockdev_superblock)
  • Varie correzioni natvis per funzionare più come le versioni recenti di Visual Studio
  • Preferire sourcelink e sourceinfo legacy
    • Aggiunta del !lmsourcesinfo <module> comando per visualizzare i flussi di sourcelink da pdb (per facilitare il debug dei problemi con sourcelink).

Problemi noti

Quando si specifica un elenco di moduli da registrare con TTD, la specifica di più moduli non funziona in questa versione.

1.2308.2002.0

Molte correzioni di bug e piccoli miglioramenti.

1.2306.12001.0

Molte correzioni di bug e piccoli miglioramenti.

1.2303.30001.0

Nota

Il debugger è stato rinominato da WinDbg Preview a WinDbg.

Il debugger legacy rilasciato con Gli strumenti di debug per Windows verrà fatto riferimento a WinDbg (versione classica).

Debug di viaggi temporali in ARM64

Non solo WinDbg viene eseguito in modo nativo in ARM64, è stato abilitato anche il debug TTD (Time Travel Debugging) dei processi ARM64 nativi. È ora possibile registrare processi ARM64 nativi (e processi x86 e ARM32) ed eseguirne il debug facilmente, anche nel computer x64. Il supporto per i processi abilitati per x64 o x64 (ARM64EC) nei dispositivi ARM64 non è ancora disponibile.

Le prestazioni complessive del TTD sono state migliorate, con un sovraccarico di registrazione notevolmente ridotto per i processi che usano istruzioni SIMD comuni. In totale sono state ottimizzate 65 nuove istruzioni, che vanno da MMX a SSE 4.2, AVX e AVX2.

Risoluzione ambigua dei punti di interruzione

I punti di interruzione ambigui consentono al debugger di impostare punti di interruzione in determinati scenari in cui un'espressione del punto di interruzione viene risolta in più posizioni. Per altre informazioni, vedere Risoluzione ambigua dei punti di interruzione.

1.2107.13001.0

La ricerca in anteprima di WinDbg include ora l'opzione per eseguire ricerche usando espressioni regolari - Regex. Abilitare Regex nella finestra in cui si vuole eseguire la ricerca eseguendo CTRL+F, quindi attivare o disattivare il pulsante etichettato .* accanto alla casella di ricerca.

Modalità con restrizioni

La modalità con restrizioni è un'impostazione facoltativa che può limitare il tipo di sessioni di debug winDbg Preview può iniziare solo a sessioni di debug remote e file di dump. Per altre informazioni, vedere WinDbg - Modalità con restrizioni.

Supporto delle variabili ombreggiate

Nelle versioni precedenti, WinDbg genera errori "Simboli ambigui" quando si tenta di valutare (??) o visualizzare (dx) una variabile che condivide il nome con un'altra variabile nell'ambito. Windbg ora disambigua le variabili che condividono lo stesso nome aggiungendo @n al nome della variabile. Ad esempio: foo@0, foo@1

Questa modifica verrà riflessa anche nella finestra Variabili locali. In precedenza, verrà visualizzata solo la variabile più vicina nell'ambito.

1.2104.13002.0

Una comoda funzionalità di produttività di WinDbg Preview è la possibilità di rilevare i modelli nella finestra di comando. A tale scopo, selezionare qualsiasi testo e tutte le altre istanze del testo evidenziato. Poiché questa evidenziazione è utile quando si esaminano i modelli di memoria, ora evidenzia anche numeri equivalenti in altri radianti, indipendentemente dal modo in cui il numero viene formattato in esadecimale, decimale o notazione scientifica. Per altre informazioni sugli schemi di numerazione, vedere n (Set Number Base).For more information about numbering schemes, see n (Set Number Base).

Esempio:

Quando si seleziona 0x000001e2fb3f6160, tutte le altre istanze vengono evidenziate indipendentemente dal formato.

Screenshot della finestra di comando di WinDbg con più formati numerici evidenziati.

Questa funzionalità funziona anche con evidenziazioni semi-temporanee. Ctrl + Doppio clic su un numero per evidenziare tutte le relative istanze. È possibile tenere traccia di più numeri importanti nella cronologia dei comandi in questo modo (per cancellare l'evidenziazione, CTRL+ Doppio clic sul numero di nuovo). Infine, questa funzionalità funziona anche durante la ricerca di numeri con CTRL+F.

Accesso esteso al codice sorgente

Il comando di percorso di origine .srcpath, .lsrcpath (Set Source Path) è stato aggiornato per includere un nuovo tag - DebugInfoD. Per altre informazioni, vedere Accesso esteso al codice sorgente.

Stati host e guest dei processi WOW nel modello di dati

Quando si esegue il debug di un processo WOW a 32 bit da un contesto a 64 bit, gli utenti possono ora accedere sia agli stati host che guest all'interno del modello di dati.

Esempi di stato guest a 32 bit:

dx @$curprocess.Environment

dx @$curthread.Environment

dx @$curthread.Stack

Esempi di stato host a 64 bit:

dx @$curprocess.NativeEnvironment

dx @$curthread.NativeEnvironment

dx @$curthread.NativeStack

Miglioramenti del debug JavaScript

Javascript caricato nell'interfaccia utente può ora essere sottoposto direttamente a debug all'interno della console usando il comando .scriptdebug. Per altre informazioni, vedere Scripting del debugger JavaScript - Debug JavaScript.

Miglioramenti dell'accessibilità

Con WinDbg Preview ci impegniamo a creare un debugger inclusivo per i tecnici con disabilità, stiamo migliorando continuamente l'accessibilità. Sono stati apportati i miglioramenti seguenti.

  • È ora possibile fare clic sui collegamenti della finestra di comando tramite la tastiera (MAIUSC+INVIO)
  • Spostamento tramite tastiera migliorato del menu principale
  • Spostamento tramite tastiera migliorato della barra multifunzione
  • Maggiore contrasto sugli elementi dell'interfaccia utente

Nuovo tipo di accesso ai dati "Sovrascrivi" per time travel debugger

Time Travel Debugger (TTD) fornisce ora un tipo di accesso ai dati "Sovrascrivi". Le query di memoria, dx @$cursession.TTD.Memory() ad esempio ora, hanno una colonna aggiuntiva che mostra i valori precedenti delle scritture.

Altre correzioni, miglioramenti e aggiornamenti

  • Aggiunta della funzionalità per rilevare e applicare automaticamente la soluzione alternativa per il problema hardware USB 3.1 quando sia l'host di debug del kernel che la destinazione sono controller USB 3.1.
  • Aggiunta di un nuovo collegamento all'interfaccia utente: CTRL + MAIUSC + Clic su un collegamento DML per copiarlo negli Appunti

1.0.2007.01003

Segnalibri sequenza temporale

Aggiungere un segnalibro alle posizioni di Time Travel importanti in WinDbg invece di copiare manualmente la posizione nel Blocco note. I segnalibri semplificano la visualizzazione a colpo d'occhio di posizioni diverse nella traccia rispetto ad altri eventi e per annotarle.

È possibile specificare un nome descrittivo per i segnalibri.

Screenshot della finestra di dialogo del nuovo segnalibro con il nome di esempio per la prima chiamata API nell'app Visualizza messaggio di saluto.

Accedere ai segnalibri tramite la finestra Sequenza temporale disponibile in Visualizza > sequenza temporale. Quando si passa il puntatore del mouse su un segnalibro, verrà visualizzato il nome del segnalibro.

Screenshot della sequenza temporale di WinDbg con tre segnalibri e una descrizione comando che visualizza il nome del segnalibro.

È possibile selezionare e tenere premuto (o fare clic con il pulsante destro del mouse) sul segnalibro per spostarsi in tale posizione, rinominare o eliminare il segnalibro.

Screenshot del menu popup del segnalibro con il pulsante destro del mouse con le opzioni per spostarsi in posizione, modificare e rimuovere.

Finestra Moduli

Una nuova finestra mostra i moduli e le relative informazioni, che sono disponibili tramite la barra multifunzione Visualizza. Vengono visualizzati questi dati:

  • Nome del modulo che include il percorso
  • Dimensioni in byte del modulo caricato
  • Indirizzo di base in cui viene caricato il modulo
  • Versione del file

Screenshot della finestra di visualizzazione Moduli WinDbg che mostra cinque moduli elencati.

Nomi di thread/descrizioni disponibili nel debug in tempo reale

I nomi di thread impostati da SetThreadDescription sono ora disponibili quando si esegue il debug in modalità utente in tempo reale. I nomi dei thread sono disponibili usando il comando "~" o il modello di dati del debugger.

0:000> ~
   0  Id: 53a0.5ffc Suspend: 1 Teb: 000000b1`db1ed000 Unfrozen "Hello world!"
   7  Id: 53a0.9114 Suspend: 1 Teb: 000000b1`db1ef000 Unfrozen
   8  Id: 53a0.2cc4 Suspend: 1 Teb: 000000b1`db1f1000 Unfrozen
   9  Id: 53a0.5c40 Suspend: 1 Teb: 000000b1`db1f3000 Unfrozen

0:000> dx @$curthread
@$curthread                 : ConsoleTestApp!ILT+25(mainCRTStartup) (00007ff7`fac7101e)  [Switch To]
    Id               : 0x5ffc
    Name             : Hello world!
    Stack
    Registers
    Environment

Supporto PDB portabile

È stato aggiunto il supporto PDB portabile. Il formato PDB (Program Database) portabile descrive una codifica delle informazioni di debug prodotte dai compilatori di linguaggi Common Language Infrastructure (CLI) e utilizzate dai debugger e da altri strumenti. Per altre informazioni, vedere Simboli PDB portabili.

Altre modifiche e correzioni di bug

  • WinDbg supporta ora il debug del dump del kernel AMD64 e Linux.
  • Miglioramenti della registrazione del tempo di viaggio e altre correzioni.

1.0.1912.11001

Sequenze temporali TTD: è stata aggiunta una nuova finestra che visualizza una rappresentazione visiva di eventi importanti nella traccia: eccezioni, punti di interruzione, chiamate di funzione e accessi alla memoria. Le sequenze temporali apriranno e visualizzeranno automaticamente le eccezioni (se presenti) e i punti di interruzione. Per altre informazioni, vedere Anteprima winDbg - Sequenza temporale.

Passaggio al riquadro della finestra predefinito: il riquadro della finestra personalizzato usato, mentre era più bello, causava alcuni problemi di ridimensionamento e ridimensionamento per un numero notevole di persone, quindi abbiamo scelto di rimuoverlo per il momento.

Spostamento tramite tastiera migliorato dal menu file: il menu file è ora molto più semplice da esplorare con una tastiera.

Altre modifiche e correzioni di bug

  • La finestra stack e variabili locali verrà ora disabilitata quando la destinazione è in esecuzione e non visualizzerà "Errore non specificato" quando non è presente alcuna destinazione.
  • Aggiunta di una colonna "Servizi" alla finestra di dialogo di collegamento per individuare facilmente i servizi in esecuzione.
  • Correzione di un bug che causava il rilevamento dell'architettura che non funzionava durante l'avvio di applicazioni con argomenti.
  • La finestra disassembly è stata migliorata quando vengono caricati simboli privati.
  • jsprovider.dll ora viene caricato automaticamente, quindi è stato rimosso il pulsante "Load JSProvider" dalla barra multifunzione di scripting.

1.0.1908.30002

I miglioramenti apportati alle chiamate agli oggetti - TTD Le query ora includono nomi di parametri, tipi e valori. Quando si eseguono query tra tracce per le chiamate di funzione, è possibile ottenere parametri completamente tipizzati e i relativi valori semplificando il filtro dei risultati in base ai parametri.

Supporto per Open Enclave - WinDbg Preview può ora eseguire il debug di applicazioni Open Enclave (OE) per altre informazioni, vedere Debug open enclave.

Dump ELF Core: nell'ambito del supporto di Open Enclave, WinDbg può aprire dump e file binari di base ELF, nonché simboli NANO (NANO 5 non è attualmente supportato) da enclave e applicazioni Linux. Quando si apre un dump di base da un'applicazione non Windows, le finestre di base e i comandi dovrebbero funzionare correttamente, ma la maggior parte delle estensioni e dei comandi specifici di Windows non funzionerà. I file ELF e NANO verranno scaricati dai server di simboli seguendo le convenzioni chiave definite qui. Le enclave sono l'unico scenario supportato, ma è possibile inviare commenti e suggerimenti sull'apertura di altri dump di core Linux.

Modifica del formato del file TTD: è stato apportato un aggiornamento principale al formato di file per le tracce TTD che causano interruzioni di compatibilità. Le versioni precedenti di WinDbg Preview non saranno in grado di aprire tracce registrate con queste versioni (e future) di WinDbg Preview, ma queste versioni (e future) saranno in grado di aprire sia tracce nuove che precedenti.

Altre modifiche

  • TTD userà ora il motore a 64 bit per l'indicizzazione e il bit del motore di debugger appropriato per le riproduzioni per ridurre al minimo i potenziali problemi di memoria durante l'indicizzazione e i problemi SOS durante la riproduzione.
  • L'esecuzione di "dx" senza parametri mostra ora lo spazio dei nomi radice per facilitare l'esplorazione.
  • È ora possibile modificare il simbolo predefinito e il percorso della cache di origine tramite il menu delle impostazioni.
  • Miglioramento del supporto per la registrazione di AVX-512 (la registrazione di AVX-512 causerà un rallentamento più grande del normale).
  • È stata abilitata la gestione delle licenze offline.

1.0.1905.12001

Miglioramenti alla mitigazione degli errori SymSetDiaSession: la correzione dell'ultimo mese per attenuare l'errore causato dalle applicazioni che inseriscono DbgHelp nel processo non funzionava ancora in alcuni scenari. Sono stati apportati miglioramenti e si continuerà a monitorare il feedback su questo errore.

Personalizzazione del colore principale: molti scenari richiedono diverse istanze di WinDbg aperte e spostarsi avanti e indietro tra di loro possono confondere e richiedere del tempo per capire quale sia quello "giusto". È stata aggiunta la possibilità di modificare il colore blu per distinguere visivamente le sessioni e semplificarne lo scambio.

Selezionare la barra multifunzione Visualizza e selezionare un'opzione per Colore principale nell'ultima sezione. Quando le sessioni future vengono avviate da destinazioni recenti, il colore principale verrà mantenuto come parte dell'area di lavoro della destinazione.

Miglioramenti alla tokenizzazione di origine: la finestra di origine include ora il supporto di base per il tokenizzazione dei file di origine Rust e __try/__except __finally/__leave C++.

Miglioramenti di Coroutine: è stato migliorato il supporto per le variabili locali coroutine e alcune variabili ottimizzate.

Impostazione predefinita del simbolo e della cache di origine: aggiunta di un'opzione al menu delle impostazioni in Impostazioni di debug per modificare il percorso della cache per i simboli. Nota : si è verificato un problema noto che causa l'esito negativo del caricamento dell'origine. Verrà aggiunta la convalida per evitare che ciò accada in una versione futura.

-pv fixes - Correzione di un bug che potrebbe aver impedito a -pv (collegamento non invasivo) di funzionare in alcune circostanze.

1.0.1904.18001

Correzione per l'errore SymSetDiaSession: sono stati segnalati alcuni report per un certo periodo di errore che impedisce l'avvio dell'anteprima di WinDbg in alcune situazioni. Esistono alcune applicazioni esterne che tentano di inserire una versione di DbgHelp nel processo prima di caricarla. Alcuni di essi usano una versione di DbgHelp con funzionalità mancanti, che causa questo errore quando si tenta di usare tali funzionalità. È stata aggiunta una correzione per questo e verrà monitorata se sono ancora presenti scenari in cui si verifica.

Controllo carattere: sono state aggiunte impostazioni per controllare il tipo di carattere e le dimensioni del carattere. Esistono due impostazioni diverse, una per le finestre di testo (finestre a spaziatura mono, ad esempio disassembly, origine, comando e così via) e una per le finestre degli strumenti (variabili locali, stack e così via). Esistono ancora alcune aree che non sono interessate da queste opzioni che verranno aggiornate in futuro.

Miglioramenti evidenziati: l'evidenziazione permanente del testo nella finestra di comando ora evidenzia anche il testo nelle finestre di origine e note.

Miglioramenti del caricamento del codice sorgente: è stato modificato il funzionamento del caricamento dei file di origine. In precedenza, quando si apre un file di origine, le operazioni del motore come l'esecuzione di comandi aggiuntivi non erano possibili o imprevedibili. È stato modificato il punto in cui si verifica il caricamento per consentire un migliore parallelismo e un annullamento più affidabile delle operazioni di apertura dell'origine.

Altre modifiche e correzioni di bug:

  • Aggiunta di "Vai al disassembly" al menu di scelta rapida della finestra di origine.
  • Aggiunta di una casella di controllo a "Segui l'istruzione corrente" nella finestra disassembly.
  • Correzione di un bug che causava l'esecuzione lenta della finestra di comando durante l'output di un sacco di testo.
  • È stata modificata la pagina verso l'alto e verso il basso per eseguire operazioni simili a Visual Studio.
  • Quando un file ASM viene aperto nella finestra di origine, ora avrà un commento, una stringa e un'evidenziazione della direttiva di base

1.0.1812.12001

Questa versione include questi aggiornamenti.

Intestazione C++ del modello di dati del debugger: è disponibile una nuova intestazione C++, DbgModel.h, inclusa nell'ambito di Windows SDK per estendere il modello di dati del debugger tramite C++. Per altre informazioni, vedere Debugger Data Model C++ Overview (Panoramica del modello di dati del debugger C++). Questa versione include una nuova estensione che aggiunge altre funzionalità di "stile API" al modello di dati del debugger a cui è possibile accedere tramite il comando "dx", JavaScript e la nuova intestazione DbgModel.h. Questa estensione consente al modello di dati di includere informazioni sull'assembly e sull'esecuzione del codice tramite lo spazio dei nomi Debugger.Utility.Code e il file system locale tramite lo spazio dei nomi Debugger.Utility.FileSystem.

Estensione dei tipi sintetici Con questa nuova estensione DELL'API, è disponibile un nuovo esempio nel repository GitHub qui - https://github.com/Microsoft/WinDbg-Samples/tree/master/SyntheticTypes. Questa estensione JavaScript legge i file di intestazione C di base e definisce le informazioni sul tipo sintetico per le strutture e le unioni definite nell'intestazione. Tramite il comando dx, la memoria può quindi essere strutturata come se si disponesse di un PDB con informazioni sul tipo per tali tipi.

Altre modifiche e correzioni di bug:

  • WinDbg Preview ora gestirà in modo più intelligente il trasferimento delle finestre di origine o della finestra disassembly in primo piano durante l'esecuzione dell'istruzione.
  • Riorganizzato il titolo della finestra dell'anteprima di WinDbg per avere informazioni più importanti all'avvio durante il debug del kernel.
  • Il contrasto dello sfondo alternato nella finestra di comando dovrebbe essere leggermente più evidente.

1.0.1810.2001

Questa versione include questi aggiornamenti.

  • Finestra di dialogo Nuove impostazioni a cui si accede dal menu File o dalla barra multifunzione Home.
  • Finestra di dialogo Impostazioni eventi ed eccezioni. Questo menu modifica il modo in cui il debugger gestisce eventi ed eccezioni, l'equivalente dei comandi "sx" o della finestra di dialogo dei filtri eventi di WinDbg. Selezionare Impostazioni sulla barra multifunzione home, quindi premere "Eventi ed eccezioni" a sinistra per gestirli.
  • Indicizzatore TTD migliorato con prestazioni migliori. Ciò aumenta le prestazioni dell'indicizzazione dei file di traccia TTD, rendendo il processo di indicizzazione molto più veloce (tra 2x-10x) rendendo i file di indice molto più piccoli (~50% più piccoli). I miglioramenti delle prestazioni sono più evidenti per le tracce di dimensioni superiori a 4 GB o quando si usa un computer con molti core CPU (8+). Il nuovo indicizzatore rende più fattibile eseguire il debug di tracce molto grandi (50 GB+).
  • Nuovo flag di avvio debugArch per specificare l'architettura. WinDbg Preview tenta di avviare il motore del debugger con la correttezza del bit alla destinazione per supportare meglio il debug del codice gestito. Ci sono circostanze in cui non può determinare il bitness giusto o si potrebbe voler eseguire l'override di ciò che decide. Usare -debugArch x86|amd64 per controllare l'architettura del motore di debugger.

Altre modifiche e correzioni di bug:

  • Correzione di un bug che causava la visualizzazione di barre nere in un debugger a schermo intero con una finestra mobile aperta.
  • Correzione di un bug che causava la cancellazione involontaria delle opzioni dei simboli.
  • La cronologia dei comandi viene ora mantenuta durante l'avvio da destinazioni recenti.
  • Nella finestra del modello di dati è ora possibile modificare i valori.
  • Le tracce TTD non indicizzate saranno ora più chiare che non sono indicizzate.
  • Miglioramento delle prestazioni della finestra variabili locali
  • È stato aggiunto un pulsante della barra multifunzione per salvare i log della finestra di comando in un file.
  • Aggiunto. SelectMany(<projection>) per il set predefinito di metodi LINQ.

1.0.1807.11002

Questa versione include questi aggiornamenti.

Salvataggio e caricamento automatici dei punti di interruzione. Si tratta di un primo passaggio per sostituire le aree di lavoro. Si sta avviando la route abilitando il salvataggio e il caricamento dei punti di interruzione. L'avvio di un elemento di cui è stato eseguito il debug in precedenza dalla scheda "Recenti" nel menu file caricherà ora i punti di interruzione da tale sessione. Il piano consiste nell'espandere questa funzionalità per mantenere altre informazioni tra le sessioni. I punti di interruzione hardware (ba) e altre varie proprietà su punti di interruzione come thread e processi specifici, nonché le condizioni non vengono attualmente salvate.

Modifiche secondarie e correzioni di bug:

  • Aggiunta delle opzioni della riga di comando -x, -xe, -xd, -xn e -xi per controllare la gestione di eccezioni ed eventi. Queste opzioni della riga di comando si comportano esattamente come le parti dei contatori dei comandi.
  • La finestra note supporta ora la formattazione grassetto, sottolineato e corsivo.
  • Sono stati risolti alcuni problemi di zoom e scorrimento.
  • Se si seleziona testo nelle finestre comando, memoria, origini o disassembly, verrà ora visualizzata un'evidenziazione della luce su altre istanze del testo selezionato.
  • Correzione di un bug per cui l'interruzione del caricamento dei simboli causava un errore di caricamento dei simboli per il resto della sessione.
  • NatVis ora ricarica correttamente al riavvio di una sessione.

1.0.1805.17002

Questa versione include questi aggiornamenti.

Nuova finestra disassembly: la finestra disassembly include ora:

  • Lo scorrimento verso l'alto o verso il basso caricherà continuamente più disassembly quando possibile.
  • Evidenziazione della sintassi per numeri, indirizzi di codice e opcode.
  • Se si seleziona un simbolo di codice, verrà visualizzata la finestra disassembly in tale posizione.
  • Passando il puntatore del mouse sui numeri verrà visualizzata una descrizione comando che converte tale numero in altre basi.
  • Intestazioni che firmano l'inizio di una funzione.

Finestra di origine più veloce: la finestra di origine è stata aggiornata per essere più veloce e più efficiente per le risorse.

Modifiche secondarie e correzioni di bug:

  • Correzione dei problemi relativi alla memorizzazione nella cache dei simboli
  • Correzione di alcuni casi in cui l'interruttore iniziale non è utilizzabile quando la destinazione non è interrotta
  • Se si preme tabulazioni nella finestra di comando senza nulla disponibile, il cursore rimarrà nel campo di input
  • L'anteprima di WinDbg rileverà ora il bitness durante l'apertura di file CAB

1.0.1804.18003

Questa versione include questi aggiornamenti.

Miglioramenti dello stato e dell'annullamento dei simboli: il debugger visualizza i simboli di caricamento OCCUPATO ed è difficile determinare cosa sta facendo e perché senza !sym rumoroso abilitato. È stata aggiornata l'anteprima di WinDbg per avere una migliore comunicazione su ciò che sta facendo durante il caricamento dei simboli per risolvere eventuali problemi. Oltre a visualizzare facilmente esattamente ciò che accade, sono state apportate alcune modifiche che dovrebbero apportare simboli di annullamento più affidabili e la finestra Log conterrà alcuni dei dettagli che normalmente vengono restituiti quando !sym rumoroso è abilitato. Se si preme Visualizza -> Log si otterrà l'output di caricamento dei simboli rumoroso completo senza doverlo attivare e tentare di ricaricare i simboli.

Finestra Delle note sperimentali: l'anteprima di WinDbg include ora una finestra per prendere appunti. Basta premere Visualizza -> "Note" per aprirlo. Se si copia/incolla in esso, i collegamenti DML verranno mantenuti e continueranno a funzionare come se fosse la finestra di comando. È anche possibile salvare e caricare file di note dalla barra multifunzione "Note" quando la finestra è aperta.

Finestra di origine più veloce sperimentale: per migliorare le prestazioni dell'anteprima di WinDbg, è disponibile una nuova finestra di origine sperimentale molto più efficiente. Ci sono ancora alcune lacune nei menu di scelta rapida e nell'evidenziazione della sintassi, ma vogliamo offrire a tutti la possibilità di provarlo prima che sia finito per fornire feedback anticipato. Eseguire $UseFastSourceWindow per usarlo. Se si vuole tornare al vecchio, eseguire $UseMonacoSourceWindow. L'impostazione manterrà tra le sessioni, sarà necessario chiudere e riaprire le finestre di origine per ottenere la nuova versione.

API JSProvider versione 1.2 - Per le estensioni JavaScript che dichiarano il supporto per l'API versione 1.2:

  • Qualsiasi oggetto con un metodo .compareTo che esce dallo script avrà un confronto personalizzato su di esso (gli operatori di confronto funzioneranno nell'analizzatore DX e altrove: ad esempio: IModelObject::Compare)
  • Qualsiasi oggetto con un metodo .equals che esce dallo script avrà un operatore di uguaglianza personalizzato (== e != funzionerà nell'analizzatore DX e altrove: IModelObject::IsEqualTo)
  • Gli oggetti modello nativo o dati che immettono lo script avranno .compareTo e .equals su di essi, che consentono l'accesso a qualsiasi confronto personalizzato o implementazioni di uguaglianza personalizzate.

Modifiche secondarie e correzioni di bug:

  • .server ora elenca il nome di dominio completo per un uso più semplice quando si verificano problemi di dominio relativi ai nomi brevi.
  • CTRL+G ora funziona nella finestra di origine.
  • Aggiunta della barra degli indirizzi alla finestra disassembly.
  • WinDbg Preview ora gestirà _NT_SYMBOL_PATH in modo più previsto.
  • Aggiunta dell'opzione della riga di comando -server.
  • Le query del modello di dati TTD possono ora essere visualizzate progressivamente, quindi se si interrompe il modello di dati verranno comunque visualizzati alcuni risultati. Questa funzionalità è ancora sperimentale e facoltativa. Eseguire dx @$cursession.TTD.AsyncQueryEnabled = 1 per abilitarlo.
  • Il comando "dps" include ora collegamenti ai file di origine a cui fa riferimento.

1.1801.19001.0

Questa versione include questi aggiornamenti.

Evidenziazione del testo: è ora possibile evidenziare tutte le istanze del testo selezionato direttamente nel debugger. Per usare questa funzionalità, è sufficiente selezionare un testo nella finestra di comando e quindi selezionare "Evidenzia" nella barra multifunzione del comando o premere CTRL+ALT+H. L'uso di uno di quelli sul testo già evidenziato rimuoverà l'evidenziazione.

Se si preferisce usare i comandi, è possibile usare il comando "$hl":

$hl ["someValueHere"] - Evidenzia il testo (o annulla l'evidenziazione, se già evidenziato)

$hl clearAll – Cancella tutte le voci evidenziate

$hl caseSensitive [1|0] - Impostare l'evidenziazione corrispondente alla distinzione tra maiuscole e minuscole o senza distinzione tra maiuscole e minuscole (il valore predefinito non fa distinzione tra maiuscole e minuscole)

Questa versione include anche alcune correzioni di bug secondarie.

1.1712.15003.0

Questa versione include questi aggiornamenti.

Query di memoria TTD: è ora possibile eseguire query su TTD per gli accessi alla memoria in modo analogo a come si esegue una query per le chiamate odierne. In questo modo è possibile trovare tutte le letture, le scritture e l'esecuzione che accedono a un intervallo specifico di memoria.

Esempio di lettura e scrittura: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")

Esempio di esecuzione univoco: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

Modifiche alle impostazioni : l'anteprima di WinDbg ora salverà automaticamente le impostazioni tra le sessioni, incluso il percorso del simbolo e il percorso di origine.

Miglioramenti di JavaScript

  • I numeri a 64 bit e i numeri in JavaScript contengono ora un metodo modulo che consente un'operazione modulo a 64 bit reale.
  • Gli oggetti definiti in JavaScript possono ora implementare una nozione paragonabile o equabile personalizzata che funzionerà in dx usando operatori C++ standard o nelle operazioni LINQ. Per usarlo, lo script deve dichiarare nella matrice initializeScript che supporta una nuova versione dell'API host inserendo un record "new host.apiVersionSupport(1, 2)". Al termine, è possibile usare queste funzioni in qualsiasi query LINQ "dx" o finestra del modello di dati. Se il metodo implementa .compareTo(other), è paragonabile (gli operatori di confronto funzionano in dx e LINQ). Se il metodo restituisce un valore negativo, ad esempio "this < other". Se il metodo restituisce zero, "this == other". Se il metodo restituisce un valore positivo "this > other". Se il metodo implementa .equals(other), è equabile (== funziona in dx e LINQ). Il metodo deve restituire true o false.

Modifiche secondarie e correzioni di bug:

  • Correzione di un bug per cui le finestre stack e variabili locali non funzionavano durante il debug di avvio
  • Aggiornamento dell'output di LM per segnalare in modo più accurato ProductVersion e campi simili
  • Abilitato il pulsante "esci indietro" durante le sessioni TTD
  • Aggiunta del supporto per -lsrcpath
  • Le intestazioni nelle finestre variabili locali, espressioni di controllo e modello ora non scompaiono quando si scorre verso il basso
  • Quando ALT+Tabbing torna all'anteprima di WinDbg, la finestra di comando mantiene correttamente la posizione del cursore
  • Aggiunta del tasto di scelta rapida CTRL+ALT+V per attivare o disattivare la modalità dettagliata
  • È ora possibile disabilitare lo scorrimento automatico della finestra di comando selezionando e tenendo premuto (o facendo clic con il pulsante destro del mouse) la scheda della finestra di comando e scegliendo "Disattiva scorrimento automatico"
  • È ora possibile eseguire il debug dei processi figlio tramite la pagina di avvio dell'eseguibile avanzato.

1.0.14.0

Questa versione include questi aggiornamenti.

Esperienza migliorata del server di elaborazione: una nuova notifica nel menu File per visualizzare il server di elaborazione a cui si è connessi e l'interazione con è stato aggiunto. Come parte di queste modifiche, quando termina una sessione di debug, la connessione al server di elaborazione verrà mantenuta e può essere disconnessa nel menu File.

Nuove opzioni di layout preimpostati nella barra multifunzione Visualizza: è disponibile una nuova opzione "Layout" nella barra multifunzione "Visualizza". Attualmente sono disponibili tre layout: il valore predefinito, uno incentrato sul disassembly e un minimo.

Barra multifunzione Debug di viaggi temporali: è presente una barra multifunzione di spostamento temporale avanzata che verrà visualizzata durante il debug di una traccia di debug del tempo di spostamento.

Metadati degli script JavaScript: le estensioni JavaScript possono ora restituire metadati per le proprietà e altri costrutti. Ciò significa che l'estensione può fornire stringhe della Guida, indicare il radix di visualizzazione per i valori e altro ancora. I metadati vengono forniti inserendo un descrittore di metadati in un oggetto tramite la presenza di Symbol.metadataDescriptor o una chiamata esplicita a host.metadata.defineMetadata. La funzione restituisce valori iterati e altri contesti di valore possono restituire metadati per il valore tramite host.metadata.valueWithMetadata.

Aggiornamenti dell'API JavaScript: alcune modifiche di rilievo a livello di origine sono state apportate alle API all'interno del provider JavaScript (inclusi i nuovi metodi proiettati e le proprietà negli oggetti nativi). Le estensioni esistenti non vedranno alcuna delle modifiche potenzialmente di rilievo senza indicare che supportano una nuova versione dell'API JsProvider. Il supporto per la nuova versione dell'API è indicato inserendo un record host.apiVersionSupport nella matrice restituita da initializeScript con un'attestazione di supporto versione 1.1. forse? .. con un valore che indica il supporto per la versione 1.1.

Le modifiche apportate all'API versione 1.1 includono:

  • host.getModuleSymbol e host.getModuleType restituiscono null se non riescono a trovare il simbolo anziché generare un'eccezione.
  • Tutti gli oggetti nativi hanno la proprietà address su di essi oltre a .targetLocation. Se l'oggetto non dispone di un indirizzo, verrà generata un'eccezione quando si accede alla proprietà .
  • Tutti gli oggetti nativi dispongono di nuovi metodi .getObjectValue e .setObjectValue per accedere alle proprietà dell'oggetto che possono essere in conflitto con i nomi che javaScript inseriscono nell'oggetto (ad esempio: 'address') .

Modifiche aggiuntive di JavaScript

  • Le estensioni JavaScript possono ora aggiungere e rimuovere proprietà sugli oggetti del modello di dati tramite Object.defineProperty e l'operatore delete. L'aggiunta o la registrazione di una classe JavaScript come modello padre o firma del tipo è ancora il modo fortemente preferito per modificare il modello a oggetti.
  • Le estensioni JavaScript possono ora modificare le variabili globali all'interno dei moduli nella destinazione di debug tramite una nuova API host.setModuleSymbol.
  • Tutte le funzioni matematiche che si trovano nel tipo di libreria a 64 bit (ad esempio, .add, .subtract, .multiply, .divide e così via...) sono ora presenti anche nei numeri JavaScript.
  • Le funzioni e le proprietà JavaScript possono ora restituire valori che sono enumerazioni tramite marshalling personalizzato. Una funzione o una funzione di accesso alle proprietà può restituire host.typeSystem.marshalAs(value, type...) per evocare tale marshalling personalizzato.
  • Il comando punto di interruzione nel debugger di script può ora interrompere i nomi delle funzioni oltre alle posizioni riga/colonna.
  • Gli oggetti type nelle estensioni JavaScript hanno accesso al modulo contenitore tramite la proprietà .containingModule.

Modifiche secondarie e correzioni di bug:

  • Correzione della formattazione delle schede della barra multifunzione condizionale in modo da generare meno confusione.
  • Il linguaggio DML è più rigoroso nell'analisi per migliorare le prestazioni.
  • Varie correzioni con le prestazioni e il comportamento di CTRL+F.
  • Aggiunta di un avviso durante l'esecuzione di un livello di privilegi elevati prima di provare a usare TTD.
  • Aggiunta dell'opzione per eseguire l'override del rilevamento automatico del bitness di destinazione.
  • Sono stati disabilitati vari menu file e opzioni della barra multifunzione quando non possono essere usate (ad esempio "Vai" quando si trova in un file di dump).

Problemi noti:

  • SOS non funzionerà sulle tracce x86.

1.0.13.0

Questa versione aggiunge Time Travel Tracing. Il debug di viaggi temporali consente di registrare un processo, quindi di riprodurre il processo in un secondo momento sia avanti che indietro. Il debug TTD (Time Travel Debugging) consente di eseguire il debug dei problemi più facilmente consentendo di "riavvolgere" la sessione del debugger, invece di dover riprodurre il problema fino a quando non viene trovato il bug. Per altre informazioni, vedere Debug di viaggi temporali - Panoramica.

1.0.12.0

Questa versione è stata la prima versione di WinDbg Preview. Per informazioni generali sulle funzionalità disponibili in WinDbg Preview, Funzionalità principali di WinDbg.

Vedi anche

WinDbg - Installazione

WinDbg - Opzioni di avvio della riga di comando