11

"Suppress JIT optimization on module load"调试选项的作用是什么?

我最近不得不将其关闭以处理能够成功调试使用 COM 组件的应用程序。

关闭它有什么风险?

4

2 回答 2

14

抑制 JIT 优化意味着您正在调试未优化的代码。代码运行速度有点慢,因为它没有经过优化,但您的调试体验要彻底得多。仅当您遇到优化代码中出现但无法在非优化版本中重现的错误时,才建议调试优化代码。

如果您清除 Suppress JIT optimization on module load 选项,您可以调试优化的 JIT 代码,但您的调试能力可能会受到限制,因为优化的代码与源代码不匹配。因此,调试器窗口(例如 Locals 和 Autos 窗口)显示的信息量可能不如调试未优化代码时显示的信息量多。

于 2012-09-03T07:20:22.550 回答
3

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

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

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

于 2012-09-03T07:22:10.190 回答