2013-05-28 13 views
7

Sono ancora un novizio relativo con C++ e ho riscontrato un problema con la DLL di terze parti a cui sto collegando staticamente dalla mia DLL C++ nativa. Sto usando Visual Studio 2012 per il debug della mia DLL.Cosa può WinDbg dirmi che Visual Studio non può?

(FWIW, la DLL di terze parti è di Sybase Open Client, e sto debug il mio DLL tramite un C# eseguibile che ho scritto, che carica il mio DLL C++ in modo dinamico.)

ho usato visiva Studio per passare allo smontaggio e guardare i registri e l'utilizzo della memoria per la DLL di terze parti. Visual Studio mi ha fornito molte buone informazioni su cosa sta succedendo nel mio processo ma sento che potrebbe esserci più di quello che sto vedendo, e forse un modo più semplice o più efficiente per arrivarci.

Ho letto che WinDbg è uno strumento molto potente, ma richiede molto tempo e impegno per imparare ad usarlo bene. La mia domanda è: vale la pena di imparare a usare WinDbg, o gli strumenti di debug in Visual Studio mi daranno praticamente le stesse informazioni?

+6

Prova a camminare gli heap di Windows nel debugger di Visual Studio a volte. Quindi, in effetti, * riesce * a farlo con WinDbg. – WhozCraig

+1

Lo script WinDbg è arcano come la sua sintassi può essere potente rispetto a ciò che VS consente, anche se forse con un addin o una macro è possibile ottenere funzionalità simili in VS. – 0xC0000022L

+5

Rilevazione perdite di memoria, analisi automatica degli arresti anomali, gestione tracciamento perdite, ricerca memoria, possibilità di scaricare pile di chiamate di tutti i thread facilmente, set/unset breakpoint quando vengono colpiti i breakpoint, debug su macchine che non hanno installato VS, .net debugging, logging, scriptable, supporta loop ... ecc. Fondamentalmente quello che ottieni è un debugger leggero, privo di BS che ha tonnellate di strumenti che automatizzano attività dolorose che sono difficili o impossibili usando VS, il più alto riconoscimento che vedrai è che MS usa questo per eseguire il debug di Windows, curva di apprendimento ripida ma in definitiva molto gratificante. – EdChum

risposta

3

La mia domanda è: vale la pena lo sforzo di imparare ad utilizzare WinDbg, o sarà gli strumenti di debug in Visual Studio mi ha praticamente danno la stessa informazioni?

Questo dipende molto dal tipo di programmazione che si sta eseguendo.

WinDBG consente di esaminare le strutture interne al sistema operativo. Consente di esaminare i thread e i processi nell'intero sistema e il codice di debug eseguito nel kernel del sistema operativo stesso (come i driver). Esiste una sostanziale capacità di scrivere script per scavare determinate informazioni, o, credo, persino di scrivere plugin che girano all'interno di WinDBG per eseguire determinati compiti.

La maggior parte di questo è difficile o impossibile con un debugger di tipo VS.

È quasi impossibile per me, o per chiunque altro qui, dirti se dovresti imparare a usare WinDBG. Certamente non ti farà male sapere, ma è del tutto possibile andare molto tempo nella tua vita senza averne bisogno.