Pregunta

Corro MSIL dentro de Visual Studio o a través de Mdbg.

Es allí cualquier manera de mostrar el contenido de la MSIL pila?

por ejemplo,si yo ejecuto ldloc "algunos variable", ¿hay alguna manera de mirar la pila y viendo que la variable está ahora en la pila.

Estoy suponiendo que el código MSIL pila no es el mismo que el de la CPU de la pila es decir,la memoria apuntada por el registro SP?

¿Fue útil?

Solución

En tiempo de ejecución, en realidad no hay ninguna pila "MSIL". Incluso en el modo de depuración del código que se ejecuta es siempre JIT compilado. El proceso de compilación JIT MSIL "aplana" desde una máquina de pila virtual en el código de la asamblea ordinaria de la plataforma que está ejecutando. Eso significa ldloc.0 podría llegar a ser traducido en algo así como mov eax, [sp + 4], o incluso un no-op, si el valor ya estaba ahí en un registro. Si desea depurar el ldloc instrucción específica, entonces usted tiene que mirar en el Desensamblaje de ver lo que el ldoloc se traduce en y donde se trata en realidad de cargar los datos de.

Las herramientas WinDBG + SoS (mencionado en otro post) le ayudará a ver la pila de la CPU, desde el punto de vista de código administrado . No permitirán que, sin embargo, ver la pila "MSIL" porque no hay uno para ver.

Otros consejos

Usted puede hacer eso y más con WinDbg + SoS.Verificación esta pregunta para referencias sobre cómo usar WinDbg.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top