2010-10-24 59 views
5

当我进入.NET源代码(.NET源代码步进在调试选项中启用,并且只是我的代码被禁用)时,出于某种原因在Autos和VS2010中的监视窗口,我无法在手表或自动窗格中查看.NET框架函数中的参数。但是我可以看到局部变量。为什么是这样?在C#/ VS2010中通过.NET 4.0源代码时,无法看到参数

更新: 这是一个不带优化的调试64位(x64)版本。 没有错误,在功能,我只是不能“看”参数,如:

// Enumerable.cs 

public class Lookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, ILookup<TKey, TElement>{ 
... 
    internal static Lookup<TKey, TElement> Create<TSource>(IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer) { 

更新2:似乎在默认情况下,只有.NET 4.0框架的发布版本安装。你仍然可以进入它,但你可能看不到一些函数参数和局部变量(并在某些行上设置断点)。我想我真的很喜欢使用.NET 4.0框架的Debug版本,这样我就可以在所有行上看到所有的params,locals和断点。如果我已经安装了VS2010 Premium,我该如何去安装它?

+0

你会得到什么错误? – SLaks 2010-10-24 16:45:07

回答

5

You probably need to disable optimizations

编辑迈克尔Goldshteyn - 问题的作者:

以下是来自该网址充分说明:

  1. 下面的环境变量必须VS2010之前设置启动:

    集COMPLUS_ZapDisable = 1

  2. 必须禁用VS托管过程:

    禁用VS2010中的主机进程

    1.在Visual Studio中打开项目。
    2.在项目菜单上,单击属性。
    3.单击调试选项卡。
    4.清除启用Visual Studio宿主进程复选框。

+1

为了更加清晰,您只需要在解决方案中禁用启动项目的VS托管流程。 – 2011-04-06 08:54:09

+0

您必须同时做到这一点,才能进入(所有级别的).NET Framework源代码。 – 2011-04-07 23:17:59

+0

我知道 - 我的意思是,您不需要为解决方案中的所有项目禁用VS托管过程。 :) – 2011-04-13 08:56:21

0

您可能正在调试发布版本 - 检查您是否正在运行调试版本。 (你可以'看'在发布版本中似乎是相当可变的)

0

如果你想重新启用优化调试,你是否需要取消设置COMPLUS?这是建议吗?你如下重新

set COMPLUS_ZapDisable=0 
+0

这是为了回答问题还是后续问题? – 2014-05-07 07:23:40

0

http://reflectorblog.red-gate.com/2012/03/debugging-debugging-experience/

创建您的名为YourAppName.ini可执行文件夹,其中YourAppName被替换为您的程序集的文件名的文件名的文件。所以如果你有SampleApp.exe,你会创建SampleApp.ini。

这个INI文件的内容应包含

[.NET Framework Debugging Control] 
GenerateTrackingInfo=1 
AllowOptimize=0 

保存文件并开始调试。这样做时可能不需要禁用VS Studio宿主进程。正如其他人所建议的那样禁用托管进程,在使用立即窗口时会导致间歇性崩溃,这是调试体验的一个组成部分。

快速调试!