2012-05-09 8 views
11

Estamos tratando de analizar un volcado de memoria w3wp usando windbg y encontramos que el proceso w3wp se bloquea debido al desbordamiento de la pila. Cargué el psscor4.dll y obtuve la pila de llamadas emitiendo! Clrstack. Pero también quiero saber los parámetros que se pasan a los métodos. Si ejecuto "! Clrstack -p" o "! Clrstack -a", obtenemos < sin datos > para todos los Parámetros y variables locales. Cualquier idea, ¿por qué estamos obteniendo < sin datos > en lugar de los valores reales para los Parámetros y las variables locales?! Clrstack -p que no proporciona los valores de los métodos en la pila de llamadas

+0

Creo que entiendo, hasta el punto en que hace la pregunta, "¿Alguna idea, por qué estamos obteniendo en lugar de valores reales para los Parámetros y las variables locales?" ¿Puedes reformular? –

+0

@dtryon, he actualizado la pregunta ahora. Gracias por mencionarlo. – arul

Respuesta

9

Si está ejecutando una compilación de lanzamiento, por lo general no podrá rastrear locales y parámetros, ya que están optimizados y almacenados en registros. Si realmente lo necesita, puede mirar el código compilado JIT y localizar los valores en los registros, pero eso puede requerir una gran cantidad de libros.

14

Tales son las alegrías del código optimizado para la depuración. Si usa! Sosex.mdv, al menos obtendrá los tipos de datos de sus locals/args. Luego puede ejecutar! Sos.dso o! Sosex.mdso para ver los objetos en la pila con sus tipos. Por lo general, no es terriblemente difícil rastrear los argumentos de esta manera, aunque no siempre funciona.

Cuestiones relacionadas