"Suppress JIT optimization on module load"
调试选项的作用是什么?
我最近不得不将其关闭以处理能够成功调试使用 COM 组件的应用程序。
关闭它有什么风险?
"Suppress JIT optimization on module load"
调试选项的作用是什么?
我最近不得不将其关闭以处理能够成功调试使用 COM 组件的应用程序。
关闭它有什么风险?
抑制 JIT 优化意味着您正在调试未优化的代码。代码运行速度有点慢,因为它没有经过优化,但您的调试体验要彻底得多。仅当您遇到优化代码中出现但无法在非优化版本中重现的错误时,才建议调试优化代码。
如果您清除 Suppress JIT optimization on module load 选项,您可以调试优化的 JIT 代码,但您的调试能力可能会受到限制,因为优化的代码与源代码不匹配。因此,调试器窗口(例如 Locals 和 Autos 窗口)显示的信息量可能不如调试未优化代码时显示的信息量多。
这意味着 JIT 代码不会针对调试进行优化。例如:
private int Add(int x, int y)
{
int notUsed = 2;
return x + y;
}
在此代码中,notUsed 变量将通过优化从 JIT 代码中排除,因为不需要此代码。如果您开始调试优化代码,它可能看起来不像您编写的代码(但会做同样的事情)。优化的另一个例子是方法内联。