Stiamo provando ad analizzare un dump di memoria w3wp utilizzando windbg e abbiamo rilevato che il processo w3wp si arresta in modo anomalo a causa dello stack overflow. Ho caricato psscor4.dll e ottenuto lo stack di chiamate emettendo! Clrstack. Ma voglio anche sapere che i parametri vengono passati ai metodi. Se si immette "! Clrstack -p" o "! Clrstack -a", si ottiene < senza dati > per tutti i parametri e le variabili locali. Qualche idea, perché stiamo ottenendo < nessun dato > invece dei valori attuali per i parametri e le variabili locali?! Clrstack -p non fornisce i valori dei parametri per i metodi nello stack di chiamate
11
A
risposta
9
Se si sta eseguendo una versione di rilascio, in genere non sarà possibile tenere traccia di locali e parametri non appena vengono ottimizzati e memorizzati nei registri. Se davvero ne hai bisogno, puoi guardare il codice compilato JIT e localizzare i valori nei registri ma potrebbe richiedere un sacco di conservazione del libro.
14
Tali sono le gioie del codice ottimizzato per il debugging. Se usi! Sosex.mdv, avrai almeno i tipi di dati dei tuoi locals/args. Quindi puoi eseguire! Sos.dso o! Sosex.mdso per vedere gli oggetti nello stack con i loro tipi. Di solito non è molto difficile rintracciare gli argomenti in questo modo, anche se non sempre funziona.
Penso di aver capito, fino al punto in cui si pone la domanda, "Qualche idea, perché stiamo ottenendo invece dei valori effettivi per i parametri e le variabili locali?" Puoi riformulare? –
@dtryon, ho aggiornato la domanda ora. Grazie per segnalarlo. – arul