.NET源码调试最常遇到问题解答

来源:互联网 发布:最新免费聊天软件 编辑:程序博客网 时间:2024/06/08 10:40

原文出处:http://referencesource.microsoft.com/faq.aspx

在调试参考源时如何禁用优化

        当你使用VS 2008中最新可用的参考源功能在.NET框架下调试代码时,您可能会注意到很多变量并不能够查阅。

 

       这是因为你在对优化代码进行调试。在许多情况下,你仍然可以强制跳过,因为这些东西是可供管理的。

       但如果你确实想搞清楚到底是怎么回事?幸运的是,有一种方式可以让你达到你的目的。

       你需要做的是告诉CLR不加载前JIT(又名NGEN)图像。下面是如何做到这一点的步骤。

       首先,创建一个CMD文件,设置环境变量,然后启动Visual Studio中。我将我的CMD文件命名为“NoOptDevEnv.cmd”,其内容如下:

set COMPLUS_ZapDisable=1 cd /d "%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\ide\" start devenv.exe exit


       我把这个cmd文件放在我的桌面上。当我想禁用优化且只有当我想这样做时,我就通过这个命令启动VS。

       在我的每个想达到目的的Visual Studio项目中,做以下步骤:

1)右键单击您的项目文件,并选择“属性”

2)选择“调试”选项卡, 取消 “启用Visual Studio宿主进程”

3)启动您的应用程序在调试器中。

       现在,你会看到完整的本地和成员变量信息:

 

       最后,你可能会问自己:“什么是Visual Studio宿主进程(又名VSHost),如果我把它关掉会发生什么?” 这是一个很好的问题。

       在大多数情况下,禁用VSHost不会有任何重大影响,但它将禁用你可能正在使用的两个特性。

       首先,你将不能够使用“调试区”,它的作用是允许你在安全区例如“Internet”或“Intranet”的情况下调试一个进程。 在没有VSHost的前提下这是不可用的。

       其次,设计时表达类库评价也将无法正常工作。这意味着什么呢?举个例子,如果你正在开发一个类库,你在调试器下将不能够在“即时”窗口中执行代码。

 

       在一般情况下,我建议当你完成调试时重新使VSHost可用(撤消上述步骤2)。