出于某种原因,我有时发现查看函数的优化编译器输出很有用或很有趣。
对于非托管 C/C++ 代码,我最喜欢的执行此操作的方法是在发布模式下编译,在感兴趣的函数中设置断点,运行,并在遇到断点时在 Visual Studio 中查看反汇编。
我最近在一个 C# 项目中进行了尝试,发现该技术不起作用。即使在Release模式下,我看到的反汇编显然也没有优化。我找到并禁用了(在 Visual Studio 2010 中)“调试...选项和设置...调试...常规...在模块加载时抑制 JIT 优化”选项,这大概让我更接近我想要的,只是现在当我尝试运行它时它会警告我,然后我无法让它在断点处停止,以便我可以看到反汇编。
那么,如果我想查看函数的 CLR (4.0) 抖动的反汇编、优化输出,那么最好的方法是什么?需要明确的是,我希望看到 x86(或者最好是 x86_64)反汇编,而不仅仅是 IL 反汇编(您可以在 Reflector 中看到)。