如何在.NET VM(CLR)中查看JIT编译代码

Tho*_*mas 26 .net clr jit

如何获得JIT-Compiler生成的本机代码?

谢谢

Guf*_*ffa 18

在Visual Studio中,在代码中放置一个断点并开始调试.当它中断时,打开Disassembly窗口(Debug> Windows> Disassembly或Alt + Ctrl + D).

  • 选择全部,复制,打开记事本,粘贴并保存. (3认同)
  • 默认情况下,在Visual Studio中运行时,JITting将关闭.通常,与运行EXE文件相比,直接从Visual Studio(为发布模式构建)运行代码时会出现巨大的性能差异.您可以在工具,选项,调试,"在模块加载期间抑制JIT优化"下更改它.另见此问答:http://stackoverflow.com/questions/4043821/performance-differences-between-debug-and-release-builds (2认同)

小智 15

如果您只是在标准的Debug或Release exe上使用Debug-> Windows-> Disassembly,而不修改Visual Studio Debugging选项,您将只看到一个非优化的 .NET代码版本.

看看这篇文章" 如何使用Visual Studio查看JIT生成的汇编代码 ".它解释了如何检查生成的JIT优化代码.

文章的一个相关引用:

  1. 在Visual Studio中配置调试选项以允许JIT生成优化代码并允许您调试优化代码.

转到工具=>选项=>调试=>常规·确保未选中标记为"在模块加载时抑制JIT优化"的框.

·确保未选中标记为"启用我的代码"的框.


Shr*_*kar 6

您甚至可以使用 Sharplab 查看生成的代码 => https://sharplab.io/。在此,您可以根据您在调试和发布配置中编写的 C# 代码快速查看生成的代码。

最近流行的编译器资源管理器也开始支持.NET 语言。这是示例 => https://godbolt.org/z/P49Y6Ejh6 它不如 SharpLab 快,但仍然是一个可行的选择。