8

我有这个东西在代码的某些部分一直困扰着我,我不知道是什么原因造成的。

我有一个设置断点的代码块。如果我随后使用光标并将鼠标悬停在变量上,我通常可以浏览该变量的内容和值。

而有些变量,我无法查看内容,什么也没有出现。

此外,如果我尝试通过即时窗口调查那些我无法调查的内容,它会告诉我The name 'temp' does not exist in the current context

我真的很生气为什么会发生这种情况,一些整数而不是其他整数,一些类对象而不是其他相同类型的对象。

关闭 Visual Studio 并重新启动并不能修复它。

我在没有优化的调试中运行。

只是在这个问题上寻找一些帮助,所以在此先感谢。

这是它发生的代码示例,没有特殊代码或委托。即使只有几行代码,它也可能发生在程序的随机部分。

segs2D = ConvertSegmentsTo3DLines(segs2D);
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D);
TransformSegments(segs3D, transform);
foreach (var seg in segs3D)
    MoveSegmentToSolid(seg, moveNormal, solid, false);

Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>();

double d1 = (double)(segs3D[0].GetP1Tag() ?? 0);
double d2= (double)(segs3D[0].GetP2Tag() ?? 0);
foreach (DSegment2D seg in segs3D)
{
    d1= (double)(seg.GetP1Tag() ?? d1);
    d2= (double)(seg.GetP2Tag() ?? d2);
    ...Stuff
}

4

4 回答 4

8

此外,如果我尝试通过即时窗口调查那些我无法通过的窗口,它会告诉我当前上下文中不存在名称“temp”

尝试使用方法的全名

例如:

命名空间.class.method();

代替

类.方法();

似乎即时窗口也依赖于当前选定的文件/项目。

希望这有助于马蒂亚斯

于 2014-02-21T12:05:47.020 回答
1

我有一个类似的问题。我以为我在调试,但还有一个更简单(但很重要)的步骤。在“解决方案配置”设置为“调试”的地方,我还必须单击“调试”旁边的向下箭头并选择“配置管理器...”,然后在相应的弹出窗口中,“配置”仍设置为“发布”——我必须将其更改为“调试”并单击“关闭”按钮。从那里重新运行允许我在调试时查看所有变量。

于 2018-03-06T20:28:29.307 回答
0

也许变量尚未在您遇到断点的代码块中声明或初始化(即执行还没有那么远)。

例如,bar当您命中断点时,您描述的悬停和立即窗口问题都将发生在以下代码块中:

public class Whatever
{
    public void DoSomething()
    {
        string foo = "blah"; // Breakpoint hit and execution stopped here.

        // Do something.

        DoSomethingElse();
    }

    public void DoSomethingElse()
    {
        string bar = "yack";

        // Do something else.
    }
}
于 2013-02-05T05:29:26.787 回答
0

事实证明,该方法的绝对复杂性和缩进的数量在当时是造成问题的原因。我已经简化并运行了大部分原始代码,并且不再遇到这个问题。我还升级到 VS2012,这也可能有所帮助。

于 2014-04-14T05:00:59.397 回答