2010-01-20 8 views
6

Sto cercando di creare file di dump per un processo gestito.creazione di un file di dump per un'applicazione gestita (.net) utilizzando windbg (o mscordmp)

So che posso usare windbg per creare un file di dump, ma mi chiedo se sono loro eventuali flag speciali che dovrei passare al comando ".dump", dato che è un'applicazione gestita invece di un nativo uno.

una domanda secondaria correlata: ho sentito parlare di uno strumento chiamato mscordmp.exe (se lo si fa su google, si può trovare una menzione online). Mscordmp è ancora rilevante? Non riesco a trovare un punto di download da nessuna parte, ma ho pensato che potrebbe essere più adatto per il dumping della memoria gestita rispetto a windbg.

+0

possibile duplicato di [Come faccio a prendere un buon crash dump per .NET?] (Http://stackoverflow.com/questions/24874027/how-do-i-take-a-good-crash-dump-for -netto) –

risposta

4

È necessario utilizzare/ma per creare il dump della memoria completo. Altrimenti sos si lamenterà che l'analisi gestita sarà molto limitata.

0

No, non ci sono flag speciali relativi all'applicazione gestita, windbg crea solo dump della memoria, sono dati grezzi. Lo scopo del tuo strumento di analisi è sapere se il tuo dump è stato creato per l'applicazione gestita o non gestita.

Se si parla di analizzare un'applicazione gestita, si ci possono essere le seguenti operazioni:

  1. allegare windbg al processo in esecuzione un'applicazione gestita
  2. run .dump /ma <outputfilename.dmp>. Crea file di dettagli, questa operazione può richiedere diversi minuti a seconda della memoria consumata dal processo. Gli ordini flag /ma creano un dump di memoria completo del processo allegato con tutte le opzioni abilitate (non è il dump completo del sistema, solo il processo allegato).
  3. staccare dal processo, può continuare a funzionare, mentre è possibile caricare il file di scarico in windbg e analizzarlo.
  4. sos.dll è l'estensione comune windbg per l'analisi delle applicazioni gestite.

p.s. Può esserci un problema nell'abilitare sos.dll con .load sos.dll, in tal caso puoi provare con .loadby sos mscorwks.

Problemi correlati