2012-03-05 56 views
9

如果我在VS中运行版本构建,但附加了调试器。所以我可以设置断点并调查优化的代码反汇编。通常,为了查看所有优化,我需要在没有附加调试器的情况下运行,并分离到正在运行的进程。抑制模块负载上的JIT优化(仅限管理)

在Visual Studio中取消选择“在模块负载(仅限管理)抑制JIT优化”开关是否足以带来相同的结果? “相同的结果”我的意思是:相同(优化)的机器指令,如启动时没有附加调试器?

我听说JIT编译器只会利用所有的优化选项,如果程序集是一个发布版本和NO调试器被附加。现在我想知道这个开关是否可以让我的调试/检测更简单?

+0

你为什么不试试? – svick 2012-03-05 10:26:17

+0

因为它不会明确规定任何规则。 – JGrand 2012-03-05 10:30:08

+0

我确实尝试过,并且看起来也是这样做的。但我不知道这是否是定义的行为。 – 2012-03-06 14:13:44

回答

3

DEBUG和RELEASE构建之间的IL有很小的差异,因此在这种情况下您确实想使用RELEASE构建(即,所有Debug.XXX调用均在Release案例中编译出来)。

取消检查“在模块加载时抑制JIT优化(仅管理)”应允许JIT做优化,就好像没有附加调试器一样。我不知道这两起案件有什么不同。