如何查看优化的jitted .NET代码的反汇编?

Wes*_*ill 17 .net clr jit disassembly

出于这样或那样的原因,我有时会发现查看函数的优化编译器输出很有用或者很有趣.

对于非托管C/C++代码,我最喜欢的方法是在Release模式下编译,在感兴趣的函数中粘贴一个断点,运行,并在它到达断点时查看Visual Studio中的反汇编.

我最近尝试使用C#项目,并发现该技术不起作用.即使在Release模式下,我看到的反汇编显然也没有优化.我发现并禁用了(在Visual Studio 2010中)"调试...选项和设置...调试...常规...抑制模块加载时的JIT优化"选项,这可以让我更接近我想要的,只现在它在我尝试运行它时发出警告,然后我无法让它停在断点上以便我可以看到反汇编.

那么,如果我想看一个函数的CLR(4.0)抖动的反汇编优化输出,那么最好的方法是什么呢?为了清楚起见,我希望看到x86(或最好是x86_64)反汇编,而不仅仅是IL反汇编(你可以在Reflector中看到).

Wes*_*ill 17

当然,经过半天寻找这个问题的答案后,我在问到SO后5分钟就找到了答案.

我很接近; 我在问题中唯一缺少的一步是"启用我的代码"也必须在选项中取消选中.

完整指南可在此处获取:http://blogs.msdn.com/b/vancem/archive/2006/02/20/535807.aspx