“抑制JIT优化对模块加载”调试选项有什么影响?

时间:2012-09-03 07:10:57

标签: c# .net vb.net visual-studio-2005 jit

"Suppress JIT optimization on module load"调试选项有什么影响?

我最近不得不关闭它才能成功调试使用COM组件的应用程序。

关闭它会带来什么风险?

2 个答案:

答案 0 :(得分:11)

抑制JIT优化意味着您正在调试非优化代码。代码运行速度稍慢,因为它没有经过优化,但您的调试体验更加彻底。只有在遇到优化代码中出现但无法在非优化版本中重现的错误时,调试优化代码才会更加困难和建议。

如果清除模块加载时的抑制JIT优化选项,则可以调试优化的JIT代码,但由于优化的代码与源代码不匹配,因此调试能力可能会受到限制。因此,调试器窗口(如“本地”和“自动”窗口)可能无法显示与调试非优化代码时相同的信息。

答案 1 :(得分:2)

这意味着JIT代码不会针对调试进行优化。例如:

private int Add(int x, int y)
    {
        int notUsed = 2;
        return x + y;
    }

在此代码中,notUsed变量将通过优化从JIT代码中排除,因为不需要此代码。如果您开始调试优化代码,它可能看起来不是您编写的代码(但会执行相同的操作)。优化的另一个例子是内联方法。