Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Logo WinDbg con una lente d'ingrandimento che ispeziona i bit.
Questo argomento fornisce informazioni sulle novità di WinDbg. Le versioni precedenti sono state rilasciate come WinDbg Preview.
1.2506.12002.1
Nuove funzionalità
WinDbg ora viene fornito con i debugger in modalità console (cdb.exe / ntsd64.exe / kd.exe)! Per evitare ambiguità tra i file binari e non interferire con le copie esistenti degli strumenti, i file binari includono il nome dell'architettura:
- cdbARM64.exe/cdbX64.exe/cdbX86.exe
- kdARM64.exe/kdX64.exe/kdX86.exe
- ntsdARM64.exe/ntsdX64.exe/ntsdX86.exe
Funzionalità aggiuntive:
- Il titolo della finestra degli strumenti del modello di dati può essere personalizzato tramite il comando $OpenDmoToolwindow e può essere modificato anche tramite il menu di scelta rapida della barra del titolo.
- Nuova impostazione del debugger per abilitare i download HTTP paralleli dei file di simboli. Questa opzione è abilitata per impostazione predefinita.
Correzioni di bug
- È stato risolto il modo in cui il percorso di destinazione viene salvato per i file dump aperti tramite la riga di comando (-z) in modo che possa essere aperto correttamente dal menu recenti.
- Corretto un arresto anomalo nella finestra dell'editor di script.
- Correzione del modo in cui WinDbg gestisce terminazioni di riga incoerenti nei file di origine aperti nella finestra di origine per offrire una visualizzazione più coerente dei file di origine.
- È stato risolto un problema per cui le credenziali non vengono rinnovate per i server di simboli HTTP quando si usa la nuova funzionalità di download paralleli.
- È stato risolto un problema per cui le proprietà degli oggetti modello di dati non venivano enumerate correttamente nelle estensioni JavaScript.
- È stato risolto un problema a causa del quale il testo della colonna è scomparso quando viene riordinato tramite clic e trascinamento.
- È stato risolto un problema per cui l'impostazione del filtro degli eventi tramite le opzioni della riga di comando non veniva applicata alla destinazione di debug all'avvio.
- È stato risolto un problema a causa del quale a volte l'annullamento di una finestra degli strumenti comportava contenuti vuoti.
- È stato risolto un problema per cui non è stato possibile eseguire il debug dei minidump dei processi emulati X64 nei computer ARM64.
- È stato risolto un problema per cui i punti di interruzione ambigui causavano l'arresto anomalo del debugger.
- È stato risolto un problema a causa del quale GDBServer si arresta in modo anomalo all'uscita del processo durante il debug di un processo Linux attivo.
- Sono stati risolti più problemi relativi al debug delle estensioni JavaScript (con estensione scriptdebug), inclusa una migliore enumerazione delle proprietà e la correzione di un problema di arresto anomalo del sistema.
Miglioramenti generali dell'interfaccia utente
- Il popup di suggerimento del comando è allineato al cursore e mostra solo i completamenti suggeriti, anziché tutti gli elementi prima del cursore.
- La finestra di dialogo Di avvio dell'errore di destinazione del debug fornisce altri dettagli e, per gli errori di dump aperti, fornisce un collegamento ipertestuale a un TSG non riuscito per aprire il file di dump.
- Le barre del titolo delle finestre degli strumenti hanno lo stesso menu contestuale delle schede ancorate.
- Miglioramenti visivi per le finestre Locali, Osservazione e Modello.
- Time Travel Debugging (TTD) aggiornato alla versione 1.11.532. Vedere Note di rilascio di TTD per ulteriori dettagli.
1.2502.25002.0
Nuove funzionalità
Finestra di comando IntelliSense
Il prompt di input del comando mostrerà automaticamente i completamenti suggeriti quando il primo carattere digitato è .
(punto), !
(bang) o $
(dollarsign).
I suggerimenti possono essere richiamati anche con il collegamento ai comandi Ctrl + Space
Debug di snapshot
Durante il debug dei processi in tempo reale localmente, il debugger può acquisire snapshot del processo e passare tra gli snapshot e il processo live tramite icone nella scheda "Estensioni". Analogamente, il debugger può connettersi a uno snapshot di processo di un processo senza sospenderlo tramite una stringa di protocollo snapshot:pid=<process pid in hex>
in "Connetti al debugger remoto".
Nuove API del modello di dati
Debugger.Utility.Symbols.GetTypeInformation
Restituirà le informazioni sul tipo associate a qualsiasi oggetto fornito. Esiste un argomento opzionale che consente la dereferenziazione automatica (un livello) dei puntatori se si desidera effettivamente ottenere il tipo sottostante a qualunque puntatore (o riferimento).
Debugger.Utility.Control.CreateStepFilter(<Type>, <Pattern>)
Crea un nuovo filtro per le fasi. Si trova in questo namespace, adiacente a tutte le API per la creazione dei breakpoint.
Debugger.State.StepFilters
Restituisce l'elenco dei filtri dei passaggi con proprietà ID, Descrizione, Tipo, Pattern e IsEnabled. C'è un metodo .Remove() sugli oggetti filtro dei passaggi.
Esperienza di debug CLR migliorata senza clrcomposition.dll
Il componente ridistribuibile dbgeng.dll
ora ha migliorato il supporto per il percorso dello stack per i frame CLR senza la necessità che clrcomposition.dll
sia presente.
Miglioramenti casuali
- Supporto migliore per il debug del kernel Linux (in particolare per i kernel 6.11+ )
- Supporto per le pagine KDUMP compresse ZSTD
Correzioni di bug
- Aggiornare SOS alla versione 9.0.557512.
- Risolto un calo delle prestazioni nel controllo delle firme revocate durante il caricamento di msdia140.dll.
- Corretto un arresto anomalo durante la lettura del contesto XSTATE.
- Correzione dell'evidenziazione del punto di interruzione disabilitata nella finestra disassembly per distinguere il punto di interruzione abilitato
- Corretto un arresto anomalo durante la chiusura di una finestra degli strumenti fluttuante
- È stato risolto un problema per cui talvolta la posizione corrente della finestra Sequenze temporali non verrà popolata dopo l'apertura di una traccia recente.
- È stato risolto un problema nelle finestre di Disassembly e di Memoria, che a volte non si aggiornavano dopo l'inserimento di un nuovo valore.
- Correzione dello schema di colori della barra del titolo nel tema oscuro.
- Correzione della presentazione dei punti di interruzione posticipati nella finestra Punti di interruzione in cui Location visualizza 0x0 anziché l'espressione originale immessa al momento della creazione. Inoltre, ha un'icona distinta che indica che non è vincolata.
- È stato risolto un problema in Variabili locali/Espressione di controllo per cui il clic con il pulsante destro del mouse su un elemento visibile causava lo scorrimento della visualizzazione verso l'alto.
- Correzione dei problemi relativi a natvis, vedere il report di bug originale .
- Correzione della posta indesiderata del debugger kd con messaggio
Error getting port connector information
, vedere il report di bug originale. - È stato risolto un problema in cui
gc
attivava punti di interruzione condizionali quando la condizione era falsa. - I registri YMM e ZMM possono ora essere visualizzati durante il debug di una traccia TTD.
Correzioni per l'accessibilità
- Navigazione migliorata tramite tastiera per le finestre Variabili locali, Finestre di controllo e Punti di interruzione.
- Migliorata la leggibilità visiva delle finestre della Barra multifunzione, delle Variabili locali, delle Espressioni di controllo e dei Punti di interruzione.
- Miglioramento dell'usabilità del lettore di schermo delle finestre Variabili locali, Monitoraggio e Punti di interruzione
- La modifica di elementi in Variabili locali, Espressioni di controllo, Punti di interruzione manterrà lo stato attivo precedente della tastiera, la selezione e lo scorrimento, quando possibile.
- Miglioramento del supporto generale per il ridimensionamento del testo di Windows
Miglioramenti generali dell'interfaccia utente
- Aggiunto comando per spostare il focus tra la casella di testo per l'input del comando e il riquadro di output del comando in modalità Toggle Mark, simile al prompt dei comandi. La scorciatoia è
Ctrl + M
- Aggiunta dell'elemento di menu contestuale "Vai a Disassembly" nella finestra Punti di interruzione.
- Aggiunto il menu contestuale alla finestra Disassembly per Esegui fino a istruzione, Imposta puntatore istruzione, Vai al Sorgente, Attiva/Disattiva punto di interruzione, Attiva/Disattiva stato del punto di interruzione
Debugging del Viaggio nel Tempo (TTD)
- Aggiornato alla versione 1.11.481.
- Consultare le note sulla versione di TTD
1.2410.11001.0
Modifica che causa un'interruzione
- dbghelp.dll si collega dinamicamente a msdia140.dll. Questo dovrebbe influire solo sugli strumenti che ridistribuisono dbghelp.dll senza includere anche msdia140.dll. Si noti che msdia140.dll è incluso nei pacchetti nuget che includono dbghelp.dll.
Correzioni di bug
- È stato risolto un problema per cui gli alias della funzione della raccolta di estensioni non erano associati ai trigger di caricamento
- Non rendere inattivo lo store dei simboli quando si riceve l'errore ERROR_INTERNET_SECURITY_CHANNEL.
- È stato risolto un problema a causa del quale non è stato possibile digitare una barra rovesciata nella finestra di comando per i layout di tastiera non in inglese.
- È stato risolto un problema per cui la casella di testo modificabile nella finestra di Punti di interruzione, Variabili locali e Esplora non veniva fatto scorrere fino al cursore quando il testo era più lungo della colonna in cui era ospitato.
- Per i dump CAB o ZIP assegnare priorità a *.dmp (singolo periodo) in *.*.dmp (periodi doppi)
Correzioni per l'accessibilità
- Il ridimensionamento delle colonne tramite tastiera è stato corretto per le finestre di osservazione/variabili locali.
- Spostamento tramite tastiera migliorato in WinDbgX.
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.
Debugging del Viaggio nel Tempo (TTD)
- Aggiornato alla versione 1.11.429.
- Vedere Note di rilascio di TTD per ulteriori dettagli.
1.2407.24003.0
Nuove funzionalità
Nuovo provider di script JavaScript
Distribuiamo ora un nuovo provider JavaScript retrocompatibile basato su V8. Di conseguenza, gli host arm64 possono ora usare le estensioni JavaScript. L'interfaccia utente arm64 utilizza ora di default il motore arm64.
Il nuovo provider è abilitato per impostazione predefinita in tutte le architetture. Su x86 e x64, può essere attivato/disattivato tramite i comandi e . A un certo punto in futuro, questi comandi e il provider JavaScript legacy verranno rimossi.
Estendibilità dell'interfaccia utente tramite la raccolta di estensioni e il modello di dati
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 alla documentazione del manifesto della raccolta di estensioni
Aggiunta di parametri di eccezione al trigger di caricamento eccezione della galleria delle estensioni
È ora possibile caricare in modo condizionale un'estensione di galleria in base a valori di parametro di eccezione specifici. Per informazioni dettagliate, vedere Documentazione del Manifesto della Galleria delle Estensioni
Opzione di configurazione per non scaricare mai simboli specifici
È ora possibile ignorare il download dei simboli per le immagini specificate.
Symbols
Nella sezione di configurazione del file DbgX.xml
è 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()
Nuovo comando per visualizzare le informazioni sourceLink
Per facilitare il debug di problemi relativi al download di sorgenti basate su SourceLink incorporato, puoi ora usare il comando 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 dello stack mostra i frame integrati quando appropriato.
Correzioni di bug
- È stato risolto un problema per cui i PDB di dimensioni superiori a 4 GB non sarebbero stati 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).
- Risolti i bug durante la valutazione dei trigger di caricamento della galleria delle estensioni.
- Corretto un bug con
!address
che poteva causare un arresto anomalo. -
!heap -a -a
dovrebbe funzionare ora.
TTD
Consultare le note di rilascio di TTD per la versione 1.11.410.
1.2402.24001.0
Nuove funzionalità
Debugging del sistema Linux in tempo reale
È ora possibile eseguire il debug di un processo Linux in tempo reale. Per altre informazioni, consultare i seguenti argomenti:
Debugging dei processi remoti live di Linux
Il client WinDbg per il prossimo futuro richiederà comunque Windows, perché WinDbg non viene eseguito in Linux.
Registrare un sottoinsieme dell'esecuzione con il Debug di Viaggi Temporali
È ora possibile specificare un elenco di moduli da registrare per concentrare il TTD sui moduli che ti interessano. 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 qui sotto.
Per un controllo più preciso, è possibile registrare con precisione il programma usando una nuova API di registrazione in-process. Vedi come usare il codice di esempio e la documentazione.
Finestra compatta del registro
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) per i comandi di memoria
I comandi (Inserisci valori) in memoria ora supportano indirizzi fisici esattamente come i comandi (Visualizza memoria). 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 , tranne 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 cache verrà letta. Le parentesi quadre intorno a "uc" devono essere incluse. |
/p[wc] |
Uguale a /p , ad eccezione del fatto che la memoria a scrittura combinata 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 (Inserisci valori).
Correzioni di bug
- Supporto per la demangling dei nomi nel debug di Rust su Linux
- Miglioramenti al debug CLR
- Aggiungere la possibilità di forzare i fotogrammi CLR in modalità mista
- L'impostazione
ForceMixedModeStackWalker
è stata aggiunta aconfig.xml
oDbgX.xml
. - Aggiunto il comando
!forceclrmixedmodeunwind
per le indagini occasionali o se non è possibile modificare la configurazione.
- L'impostazione
- Aggiungere la possibilità di forzare i fotogrammi CLR in modalità mista
- Miglioramenti generali del debug CLR in Linux
- Risolvere alcuni problemi relativi alle variabili LinuxKernel.js e per CPU
- Aggiunto il comando
!runq
a LinuxKernel.js per consentire il dump delle code di esecuzione del pianificatore del kernel per CPU (simile per forma al comando dell'utilità di crash di Linuxrunq
) - Correzione di vari comandi in LinuxKernel.js per corrispondere alle modifiche del kernel: nei kernel più recenti, l'albero timer utilizza nodi RB memorizzati nella cache anziché nodi RB non elaborati; nei kernel più recenti, l'elenco di all_bdevs è stato rimosso, quindi i dispositivi a blocchi vengono ora attraversati dal superblock (blockdev_superblock)
- Aggiunto il comando
- Varie correzioni di Natvis per renderlo più simile alle versioni recenti di Visual Studio.
- Preferisci sourcelink rispetto a sourceinfo legacy
- Aggiunto il comando
!lmsourcesinfo <module>
per visualizzare i flussi di SourceLink dal file pdb (per agevolare il debug dei problemi con SourceLink).
- Aggiunto il comando
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 Debugging Tools per Windows sarà indicato come WinDbg (classic).
Debugging dei viaggi nel tempo su 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 x64 o per quelli abilitati per x64 (ARM64EC) sui 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 ulteriori informazioni, vedere Risoluzione ambigua dei punti di interruzione.
1.2107.13001.0
Ricerca regex
La ricerca in anteprima di WinDbg include ora l'opzione per eseguire ricerche usando espressioni regolari - Regex. Abilitare Regex nella finestra in cui si desidera cercare premendo Ctrl+F, quindi attivare il pulsante etichettato "Regex" 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 ulteriori 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 adesso disambigua le variabili che condividono lo stesso nome aggiungendo @n
al nome della variabile. Ad esempio: foo, foo
Questa modifica verrà riflessa anche nella finestra Variabili locali. In precedenza, verrà visualizzata solo la variabile più vicina nell'ambito.
1.2104.13002.0
Selezione e ricerca di numeri intelligenti
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 ulteriori informazioni sugli schemi di numerazione, vedere 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 .srcpath, .lsrcpath (Set Source Path) è stato aggiornato per includere un nuovo tag – DebugInfoD. Per ulteriori 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 ulteriori informazioni, consultare Scripting del Debugger JavaScript - Debugging JavaScript.
Miglioramenti dell'accessibilità
Con WinDbg Preview si è impegnati 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 il Debugger di Time Travel
Time Travel Debugger (TTD) fornisce ora un tipo di accesso ai dati "Sovrascrivi". Le query di memoria, come dx @$cursession.TTD.Memory()
, 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.
- Aggiunto un nuovo collegamento all'interfaccia utente: Ctrl + Maiusc + clic su un collegamento DML lo copia nella clipboard.
1.0.2007.01003
Segnalibri della cronologia
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 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.
Sub>Screenshot del menu contestuale del segnalibro attivato con il tasto destro del mouse con le opzioni per spostarsi alla posizione, modificare o 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 ulteriori 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
Cronologie TTD: è stata aggiunta una nuova finestra che visualizza una rappresentazione visiva di eventi importanti nella tua 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 ulteriori informazioni, vedere WinDbg Preview - Sequenza temporale.
Ritorno alla cornice della finestra predefinita - La cornice della finestra personalizzata che stavamo utilizzando, pur essendo più gradevole esteticamente, stava causando problemi di scalabilità e dimensionamento per un numero notevole di persone, quindi abbiamo scelto di rimuoverla per il momento.
Navigazione tramite tastiera migliorata del menu file - Il menu file è ora molto più semplice da esplorare con solo la tastiera.
Altre modifiche e correzioni di bug
- La finestra dello stack e delle variabili locali sarà ora disabilitata quando il target è in esecuzione e non visualizzerà "Errore non specificato" quando non c'è un target.
- È stata aggiunta una colonna "Servizi" alla finestra di dialogo di connessione per individuare facilmente i servizi in esecuzione.
- Risolto un bug che impediva il corretto funzionamento del rilevamento dell'architettura durante l'avvio delle applicazioni con argomenti.
- La finestra di disassemblaggio offre un disassemblaggio migliorato 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 agli oggetti delle chiamate TTD - Le query delle chiamate ora includono nomi di parametri, tipi e valori. Quando si eseguono query tra tracce per le chiamate di funzione, si possono ottenere parametri completamente tipizzati e i relativi valori, rendendo più facile filtrare i risultati in base ai parametri.
Supporto per Open Enclave - WinDbg Preview può ora eseguire il debug di applicazioni Open Enclave (OE); per ulteriori informazioni, consultare debugging di Open Enclave.
ELF Core Dumps - Come parte del supporto per Open Enclave, WinDbg può aprire dump dei core ELF e file binari, nonché simboli DWARF (DWARF 5 non è attualmente supportato), sia da enclave sia da 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 DWARF verranno scaricati dai server di simboli seguendo le convenzioni delle chiavi 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 di TTD: è stato apportato un aggiornamento principale al formato di file per le tracce di TTD che interrompe la compatibilità futura. 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 entrambe le tracce nuove e precedenti.
Altre modifiche
- TTD utilizzerà ora il motore a 64 bit per l'indicizzazione e la bitness del motore di debug appropriata per le ripetizioni, al fine di ridurre al minimo i potenziali problemi di memoria durante l'indicizzazione e i problemi SOS durante la ripetizione.
- Eseguire "dx" senza parametri mostrerà 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).
- Abbiamo abilitato la *licenza 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 d'accento: molti scenari richiedono diverse istanze di WinDbg aperte e spostarsi avanti e indietro tra di loro può confondere e richiedere del tempo per capire quale sia quella "giusta". È 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 il Colore di accento nell'ultima sezione. Quando le sessioni future vengono avviate da obiettivi recenti, il colore di accento verrà mantenuto come parte dell'area di lavoro dell'obiettivo.
Miglioramenti alla tokenizzazione di origine: la finestra di origine ora include il supporto di base per la tokenizzazione dei file sorgente Rust e __try/__except/__finally/__leave del 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 un'opzione al menu delle impostazioni sotto Impostazioni di debug per modificare il percorso della cache per i simboli. Nota: è noto che lasciarlo vuoto provocherà il fallimento 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 - Abbiamo ricevuto segnalazioni da un po' di tempo di un errore che impedisce il lancio di WinDbg Preview 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 del carattere - Sono state aggiunte impostazioni per controllare il tipo e la dimensione 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.
Evidenziazione migliorata - L'evidenziazione permanente del testo nella finestra di comando ora evidenzia anche il testo nelle finestre di origine e nelle 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. Abbiamo cambiato il luogo in cui avviene il caricamento per consentire un miglior parallelismo e un annullamento più affidabile delle operazioni di apertura della sorgente.
Altre modifiche e correzioni di bug:
- Aggiunto "Vai al disassembly" al menu contestuale della finestra di origine.
- Aggiunta una casella di controllo a "Segui l'istruzione corrente" nella finestra di disassemblaggio.
- Risolve un bug che causava un rallentamento della finestra di comando quando veniva prodotto molto testo.
- Sono stati modificati i tasti "page up" e "page down" per funzionare in modo simile 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 ulteriori informazioni, vedere la 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 estende il modello di dati per includere informazioni sull'assembly e sull'esecuzione del codice tramite lo spazio dei nomi Debugger.Utility.Code e sul 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 della home, quindi selezionare "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 debugArch flag di avvio per specificare l'architettura. WinDbg Preview tenta di avviare il motore del debugger con la giusta architettura per il sistema di destinazione per supportare meglio il debug di 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 delle 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. Stiamo iniziando quel percorso 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 proprietà varie dei punti di interruzione, come i contesti specifici per thread e processo e le condizioni, non vengono attualmente salvati.
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 loro controparti nei 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 visualizzato un leggero evidenziamento sulle 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 di smontaggio: ora la finestra di smontaggio include:
- Scorrere verso l'alto o verso il basso caricherà continuamente più contenuti di disassemblaggio quando possibile.
- Evidenziazione della sintassi per numeri, indirizzi di codice e opcode.
- Selezionando un simbolo di codice, la finestra di disassembling si sposterà a quella posizione.
- Passando il puntatore del mouse sui numeri verrà visualizzato un suggerimento che converte quel numero in altre basi.
- Intestazioni che indicano l'inizio di una funzione.
Finestra sorgente più veloce: la finestra sorgente è stata aggiornata per essere più veloce e più efficiente nell'uso delle risorse.
Modifiche secondarie e correzioni di bug:
- Correzione dei problemi relativi alla memorizzazione nella cache dei simboli
- Correzione di alcuni casi in cui la funzione di attivazione iniziale non è utilizzabile quando la destinazione non presenta interruzioni
- Se premi Tab nella finestra di comando quando non c'è 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 della cancellazione dei simboli - In alcuni casi il debugger visualizza i simboli in caricamento BUSY ed è difficile capire cosa stia facendo e il motivo senza !sym noisy 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 premi Visualizza -> Log, otterrai l'output completo del caricamento dei simboli rumorosi senza dover attivare e tentare di ricaricare i simboli.
Finestra delle Note Sperimentali: l'anteprima di WinDbg include ora una finestra per prendere appunti. Basta cliccare su 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. Per utilizzare, eseguire $UseFastSourceWindow. Se si vuole tornare al vecchio, eseguire $UseMonacoSourceWindow. L'impostazione si manterrà attraverso le sessioni, sarà necessario chiudere e riaprire le finestre di origine per visualizzare 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 nativi o modelli di dati che entrano nello script avranno i metodi .compareTo e .equals, che permettono di accedere 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 di scomposizione.
- WinDbg Preview ora gestirà _NT_SYMBOL_PATH in modo più previsto.
- Aggiunta 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. Esegui
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 quegli strumenti per il 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 a sensibile o insensibile alle maiuscole (predefinito è insensibile alle maiuscole)
Questa versione include anche alcune correzioni di bug secondarie.
1.1712.15003.0
Questa versione include questi aggiornamenti.
Query di memoria TTD - Ora puoi eseguire query su TTD per gli accessi alla memoria in modo simile a come esegui query per le chiamate oggi. 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 unico: 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)". Dopo averlo fatto, puoi usare queste funzioni in qualsiasi query LINQ "dx" o finestra di modello dati. Se il metodo implementa .compareTo(altro), è paragonabile (gli operatori di confronto funzionano in dx e LINQ). Se il metodo restituisce un valore negativo, ad esempio “questo < altro”. Se il metodo restituisce zero, significa che "this == other". Se il metodo restituisce un valore positivo "this > other". Se il metodo implementa .equals(altro), è equabile (== funziona in dx e LINQ). Il metodo deve restituire vero o falso.
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 locali, osservazione 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
- Aggiunto il tasto di scelta rapida CTRL+ALT+V per attivare/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 avanzata dell'eseguibile di avvio.
1.0.14.0
Questa versione include questi aggiornamenti.
Esperienza migliorata del server dei processi: è stata aggiunta una nuova notifica nel menu File per mostrare a quale server dei processi si è connessi e con cui si sta interagendo. 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 predefinito nella scheda Visualizza della barra multifunzione - È disponibile una nuova opzione "Layout" nella scheda "Visualizza" della barra multifunzione. Attualmente sono disponibili tre layout: quello predefinito, uno incentrato sullo smontaggio e uno minimalista.
Barra multifunzione Debugging Viaggio nel Tempo - È presente una barra multifunzione avanzata per il Debugging Viaggio nel Tempo che verrà visualizzata durante il debug di una traccia di debug del Viaggio nel Tempo.
Metadati dagli script JavaScript - le estensioni JavaScript possono ora restituire metadati per le proprietà e altri costrutti. Ciò significa che l'estensione può fornire stringhe di aiuto, indicare la base 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. Le funzioni che restituiscono valori, i valori iterati e altri contesti relativi ai valori possono restituire metadati per il loro valore attraverso host.metadata.valueWithMetadata.
Aggiornamenti dell'API JavaScript: alcune modifiche che potrebbero rompere la compatibilità a livello di codice sorgente sono state apportate alle API nel provider JavaScript (inclusi nuovi metodi introdotti e proprietà sugli 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 ha un indirizzo, viene 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 un accessore di proprietà può restituire host.typeSystem.marshalAs(value, type...) per attivare 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 è stato rielaborato per essere più rigoroso nel parsing e migliorare le prestazioni.
- Varie correzioni con le prestazioni e il comportamento di CTRL+F.
- Aggiunto un avviso quando si esegue il programma senza privilegi elevati prima di provare a usare TTD.
- Aggiunta l'opzione per ignorare il rilevamento automatico del bitness di destinazione.
- Sono stati disabilitati vari menu file e opzioni della barra degli strumenti quando non possono essere usate (ad esempio "Vai" quando ci 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 Debugging dei Viaggi nel Tempo consente di registrare un processo, quindi di riprodurlo 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 ulteriori informazioni, vedere Panoramica del Debugging dei viaggi nel tempo.
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.