如何查看JIT生成的代码

时间:2015-08-04 06:51:43

标签: .net assembly

http://aakinshin.net/en/blog/dotnet/ryujit-ctp5-and-loop-unrolling/这样的帖子显示了JIT编译器创建的汇编代码。我如何从.NET程序中获取生成的程序集?

1 个答案:

答案 0 :(得分:4)

这只是从Visual Studio调试器窗口中复制而来。您只需更改一些选项以便调试优化代码,否则不会发生循环展开:

  • 工具>选项>调试>一般>取消勾选“抑制JIT优化”复选框。同时解开“Just My Code”以保证安全。这可确保即使您正在调试,也允许优化器完成其工作。
  • 构建>配置管理器>左上角组合=释放。 Debug构建永远不会优化。
  • 项目>属性>构建>取消选中“首选32位”复选框,确保平台目标组合为AnyCPU。必要的是你得到新的x64抖动而不是x86抖动来生成代码。
  • 在要查看的代码上设置断点。请注意,断点在优化代码中表现不佳,可能根本不会中断,最好将其设置在方法标题上或从一开始就单步执行。
  • 按F5。在断点处使用Debug> Windows>拆卸。您将看到源代码和机器代码的混合,就像它在博客文章中看到的一样。

请注意,您必须编写具有足够副作用的“实质性”代码,以免完全优化。例如,Console.Write()可以提供帮助。如果您无法将源代码与机器代码关联起来,那么您可能需要先为Debug构建执行此操作。