
Un front-end PowerShell per il motore di debug di Windows.
Un front-end PowerShell per il motore di debug di Windows.
Pronto per tabulare verso la gloria? Per un'introduzione più rapida, dai un'occhiata a Primi passi.
Questo progetto non è prodotto, approvato o monitorato dal team di debug di Windows. Mentre il team di debug accoglie con favore feedback sulla loro API e sui front-end (windbg, kd, et al.), non hanno alcuna connessione con questo progetto. Non segnalare bug o feedback al team di debug riguardanti questo progetto.
Questo non è un progetto finanziato: non ha risorse ufficiali allocate, e viene sviluppato solo da volontari. Non assumere alcuna dipendenza produttiva da questo progetto a meno che tu non sia disposto a supportarlo completamente da solo. Sentiti libero di segnalare problemi e inviare richieste di pull, ma tieni presente che con le risorse volontarie limitate, potrebbe passare del tempo prima che le tue segnalazioni vengano gestite.
Questo è un progetto sperimentale: non è completamente maturo, e ci si devono aspettare modifiche sostanziali spesso.
Corollario delle avvertenze sopra: eviterei di collegare DbgShell a target live di alto valore.
https://aka.ms/dbgshell-latest
Hai mai provato ad automatizzare qualcosa nel debugger? (cdb/ntsd/kd/windbg) Come è andata?
La principale motivazione per DbgShell è che è davvero troppo difficile automatizzare qualsiasi cosa nel debugger. Ci sono delle strutture oggi per assistere nell'automazione del debugger, ovviamente. Ma a mio parere non stanno soddisfacendo le esigenze delle persone.
L'obiettivo del progetto DbgShell è portare la bontà del mondo PowerShell orientato agli oggetti nel mondo del debug. Quando fai 'dt' per scaricare un 'oggetto', dovresti ottenere un oggetto reale. Lo scripting dovrebbe essere facile come scrivere uno script PowerShell.
Il progetto DbgShell fornisce un front-end PowerShell per dbgeng.dll, includendo:
L'host personalizzato è ancora un programma a riga di comando (basato su conhost.exe) (analogo a
ntsd/cdb/kd), ma può essere invocato da windbg (!DbgShell).
Oltre a rendere l'automazione molto più semplice e potente, affronterà anche altre problematiche, come la facilità d'uso per le persone che non devono usare i debugger così spesso. (una lamentela che ho sentito è che "quando mi trovo a dover usare windbg, passo tutto il mio tempo nel .CHM")
Per gli utenti esperti di windbg, d'altra parte, un altro obiettivo è rendere la transizione il più
fluida possibile. Quindi, ad esempio, il provider di namespace non è l'unico modo per
accedere ai dati; puoi ancora usare comandi tradizionali come "~3 s", "k", ecc.
Non sto solo parlando del tipo di cosa in cui apri un editor di testo e scrivi un grosso script per fare qualcosa di complesso—sto anche parlando della capacità di sfornare roba relativamente semplice direttamente sulla riga di comando. Ci sono molte situazioni in cui vorresti poter usare un po' di logica, ma nulla di così grande o riutilizzabile da volerlo persino salvare. Dovrebbe essere facile sfornare semplici "one-liner" come "interrompi su CreateFile se il file in apertura è sul desktop dell'utente e la funzione Blah è sullo stack."
Chiariamoci: mi ci sono voluti circa 4 anni per "scaldarmi" con PowerShell. Penso che abbia spigoli vivi, aspetti che sono semplicemente difficili, e molti bug, sia nella progettazione che nell'implementazione. A volte mi irrita molto. Tuttavia, i benefici di PowerShell sono convincenti, e mi hanno convinto che è la cosa migliore da usare per questo progetto: