"Suppress JIT optimization on module load"
调试选项有什么影响?
我最近不得不关闭它才能成功调试使用COM组件的应用程序。
关闭它会带来什么风险?
答案 0 :(得分:11)
抑制JIT优化意味着您正在调试非优化代码。代码运行速度稍慢,因为它没有经过优化,但您的调试体验更加彻底。只有在遇到优化代码中出现但无法在非优化版本中重现的错误时,调试优化代码才会更加困难和建议。
如果清除模块加载时的抑制JIT优化选项,则可以调试优化的JIT代码,但由于优化的代码与源代码不匹配,因此调试能力可能会受到限制。因此,调试器窗口(如“本地”和“自动”窗口)可能无法显示与调试非优化代码时相同的信息。
答案 1 :(得分:2)
这意味着JIT代码不会针对调试进行优化。例如:
private int Add(int x, int y)
{
int notUsed = 2;
return x + y;
}
在此代码中,notUsed变量将通过优化从JIT代码中排除,因为不需要此代码。如果您开始调试优化代码,它可能看起来不是您编写的代码(但会执行相同的操作)。优化的另一个例子是内联方法。