JIT 优化和调试

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题适用 主题适用

仅限托管

主题适用

标准版

主题适用 主题适用

仅限托管

主题适用

专业团队版

主题适用 主题适用

仅限托管

主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

当调试托管应用程序时,Visual Studio 会默认取消优化实时 (JIT) 代码。取消 JIT 优化意味着您调试的是非优化代码。由于代码未优化,因此代码会运行得稍慢一些,但您的调试体验会更全面。由于调试优化代码要更难一些,因此建议仅在遇到优化代码中发生的 bug 无法在非优化版本中重现时使用。

JIT 优化在 Visual Studio 中由“在模块加载时取消 JIT 优化”选项控制。您可以在“选项”对话框中“调试”节点下的“常规”页上找到此选项。

如果清除“在模块加载时取消 JIT 优化”选项,您可以调试优化 JIT 代码,但调试的能力会由于优化代码与源代码不匹配而可能受到限制。因此,调试器窗口(如“局部变量”和“自动”窗口)显示的信息可能没有调试非优化代码时显示的信息那么多。

另一个重要差异是有关使用“仅我的代码”进行调试。如果您正在使用“仅我的代码”进行调试,调试器就会将优化代码作为非用户代码处理,不在调试时显示。因此,在调试 JIT 优化代码时,您可能想关闭“仅我的代码”。有关更多信息,请参见如何:单步执行“仅我的代码”

切记,当模块加载时,“在模块加载时取消 JIT 优化”选项会取消代码优化。如果附加到已正在运行的进程,它可能包含已加载的代码、JIT 编译的代码和优化的代码。“在模块加载时取消 JIT 优化”选项对这些代码无效,尽管它会影响在附加后加载的模块。此外,“在模块加载时取消 JIT 优化”选项不影响用 NGEN 创建的模块,如 WinForms.dll。

请参见

任务

如何:单步执行“仅我的代码”

概念

托管执行过程

其他资源

调试托管代码

附加到运行进程