繁体   English   中英

Visual Studio在调试时显示错误的值?

[英]Visual Studio showing wrong values while debugging?

当我看到奇怪的东西时,我正在调试我的代码。 基本上它归结为:

怪事

你在这里看到的是一个带有负值的unsigned int ...

我还注意到一些周围的变量没有value pop-up (?)而其他变量没有。 但是这个变量是唯一一个具有不可能价值的变量。

这怎么可能?

我只有C#Visual Studio 2010,所以我不知道其他版本或不同语言存在此问题。 如果是这种情况,我会相应地更改标题和标签。

在调试时,Visual Studio将跟踪当前上下文中的每个变量。

考虑以下代码:

void SomeMethod1()
{
    int j = 0;
}

void SomeMethod2()
{
    int i = 0;
}//Breakpoint on this line.

当程序中断时,当前上下文是SomeMethod2 此时,开发人员无法检查j的值是什么。 这是因为int j 不是当前上下文中的变量。

OP描述行为背后的实际原因:

Visual Studio检查当前上下文中是否存在变量的名称 ,并且不检查 变量本身是否存在于当前上下文中。

因此,如果我们在SomeMethod1变量j的名称更改为i ,我们可以突然查看其“值”。 想象一下,如果iSomeMethod2是一个字符串会有多奇怪:

在此输入图像描述

你什么时候该知道的?

每当你有一段代码时,它不能立即清楚当前的上下文是什么。 我在下面的代码中遇到了这个问题:

private double CalculateFast(double d)
{
    //Depending on the size of d, either [Method 1] or [Method 2] is faster.
    //Run them both and use the answer of the first method to finish.
    Tasks.Task.Factory.StartNew(() = >
    {
        //Method 1   
    }

    //Method 2

    return answer;
}

我正在调试Method 2但我认为我也可以查看Method 1的变量。 但事实并非如此,因为Method 1有自己的背景。

尝试:

  • 清洁解决方案
  • 重建解决方案
  • 没有成功 - 手动杀死PDB文件(或整个bin和obj文件夹)并重建

希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM