在C#/ VS2010中单步执行.NET 4.0源代码时无法看到params

时间:2010-10-24 15:03:43

标签: visual-studio-2010 c#-4.0

当我进入.NET源代码时(在调试选项中启用了.NET源代码步骤并禁用了我的代码),由于某种原因,在VS2010的Autos和Watch窗口中,我无法在.NET框架中查看参数手表或汽车窗格中的功能。但是我可以看到局部变量。这是为什么?

更新: 这是一个没有优化的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,我该如何安装呢?

4 个答案:

答案 0 :(得分:5)

You probably need to disable optimizations

Michael Goldshteyn编辑 - 问题的作者:

以下是该网址的完整说明:

  1. 在VS2010启动之前,必须设置以下环境变量:

    设置COMPLUS_ZapDisable = 1

  2. 必须禁用VS主机进程:

    在VS2010中禁用托管过程

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

答案 1 :(得分:0)

您可能正在调试发布版本 - 检查您是否正在运行调试版本。 (在发布版本中你可以“观察”的内容似乎相当多)

答案 2 :(得分:0)

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

set COMPLUS_ZapDisable=0

答案 3 :(得分: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 Hosting进程。正如其他人所建议的那样,禁用托管过程会在使用立即窗口时导致间歇性崩溃,这是调试体验中不可或缺的一部分。

快乐的调试!