当前位置:  开发笔记 > 编程语言 > 正文

显示堆栈的内容

如何解决《显示堆栈的内容》经验,为你挑选了1个好方法。

我在Visual Studio中或通过Mdbg运行MSIL.

有没有办法显示MSIL堆栈的内容?

例如,如果我执行ldloc"some variable",有没有办法查看堆栈并看到变量现在在堆栈上.

我假设MSIL堆栈与CPU堆栈不同,即SP寄存器指向的内存?



1> Scott Wisnie..:

在运行时,实际上没有任何"MSIL"堆栈.即使在调试模式下,执行的代码也始终是JIT编译的.JIT编译MSIL的过程将其从虚拟堆栈机"扁平化"为您运行的平台的普通汇编代码.这意味着如果值已经存在于寄存器中,那么ldloc.0可能最终会被转换为类似mov eax, [sp + 4]甚至是无操作的东西.如果要调试特定指令ldloc,则必须在dissasembly中查看它以查看ldoloc被转换为什么以及它实际从何处加载数据.

WinDbg + SoS工具(在另一篇文章中提到)将帮助您从托管代码的角度查看CPU堆栈.但是,他们不允许您看到"MSIL"堆栈,因为没有人可以看到.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有