2012-08-03 10 views
8

Possiedo un sito Web in esecuzione su un server remoto e desidero ottenere alcune informazioni da un'eccezione che si sta verificando. Non riesco a installare VS o utilizzare il debug remoto e ho cercato di utilizzare varie versioni di WinDbg con scarso successo. Nei miei test locali, posso far sì che WinDbg interrompa un'eccezione C++ o un'eccezione CLR che ho lanciato, ma non posso ottenere molte più informazioni di "qualcosa è stato lanciato".Posso ottenere uno stacktrace da un'eccezione CLR senza collegare il debugger VS?

WinDbg è la strada da percorrere, o c'è un altro modo, o sono avvitato per non avere una registrazione adeguata?

+0

Direi che è necessaria una registrazione migliore, sì – YePhIcK

+0

Vorrei configurare [adplus] (http://blogs.msdn.com/b/ntdebugging/archive/2009/05/18/capturing-adplus-clr-crashes .aspx) temporaneamente per creare un minidump ogni volta che viene lanciata un'eccezione, quindi guarda il minidump con WinDbg. – vcsjones

risposta

14

Fissare WinDbg il processo, quindi immettere questi comandi:

.symfix 
sxe clr 
sxd av 
.loadby sos clr 
g 

L'esecuzione continuerà (dopo andare comando) e si romperà quando viene generata un'eccezione CLR (o qualsiasi altra eccezione non gestita). Ogni volta che si rompe su un'eccezione CLR che si vede:

(xxxx.xxxx): CLR exception - code e0434352 (first chance) 

Quindi è possibile utilizzare i comandi SOS come !pe stampare tipo di eccezione, !ClrStack per scaricare pila, !dso per scaricare oggetti gestiti nella pila, ecc

EDIT: ho avuto errori di battitura nei comandi sxe e sxd. Grazie a @MStodd per averlo notato.

+0

Intendi non avere punti di fronte a "sxe" e "sxd"? – MStodd

+0

@MStodd, buon punto! Grazie per averlo notato. Ho aggiornato il post con i comandi corretti. –

+1

Ho intenzione di provarlo sulla mia macchina incasinata in seguito, ma sta andando bene. Sembra per .NET 2.0, ho bisogno di '.loadby sos mscorwks' invece di' .loadby sos clr'. Suona bene? – MStodd

Problemi correlati