VS2010调试器无法在监视窗口中正确跟踪变量,VS2013仍然存在此错误吗?

美浓

Visual Studio 2010调试器在跟踪监视变量存储位置方面存在问题。有时,它会严重误导您,因为VS2010不会向您显示您认为它正在向您显示的变量。

例如,如果您在函数中重新使用变量名,那么随着执行范围的更改,哪个内存位置应在监视窗口CHANGES中显示:

for (int i=0; i<10; i++) {
   i=i+1; // do something, what isn't important
}

int i;
for (i=0; i<5; i++) {
  i=i+1; // do something 
}

printf("i=%d\n", i);

现在将变量i放在监视窗口中。

显然,在监视窗口中显示哪个i(或值)很重要。如果运行该程序,您将看到它进入for循环时,手表会跟踪for循环的i变量。当它退出for循环,然后使用另一个具有相同名称的变量命中下面的代码时,监视窗口不会跟踪该变量的内存。

您将看到监视窗口仍声明i为10,即使在第二个循环中i现在为0,1,2,...,而在第二个循环之后,i实际上为6,但监视窗口仍声明为10。

监视窗口应该怎么做?我认为,它应该始终向您显示具有该监视名称的变量的值,即在范围内,因为语言规则告诉您在任何给定时间仅这些变量之一在范围内。

这是调试器的监视窗口功能中的一个错误(VS2010似乎廉价地找到了函数中第一个与您在监视中给定名称相匹配的变量,并且顽强地监视了那个内存空间,而不管代码中可能还有什么其他内容,即使具有相同名称的新变量已接管了作用域(此时监视窗口对您说谎!)

当我使用VS2010时,需要留在那儿,而MSFT不会解决旧版本中的错误,我想知道该错误是否仍存在于VS2013中。我可能会很快并行安装VS2013,但是值得一提的是,可以防止其他人被监视窗口声称的变量值误导。(更糟糕的是,当您将鼠标悬停在调试器中代码中的作用域内变量名称上时,该错误值将显示为“工具提示”。

ThreeStar程序员57

我在VS 2013上遇到过几次相同的问题:(

您总是可以打开反汇编窗口,并检查程序真正在增加什么。您应该查看它是堆栈地址(最有可能在调试模式下)还是寄存器。

您可以在立即窗口或直接在监视窗口中转储寄存器值。与堆栈地址相同。只需输入在反汇编窗口中看到的内容即可。例如:

00DC4095  mov         eax,dword ptr [i]  
00DC4098  add         eax,1  
00DC409B  mov         dword ptr [i],eax  

在00DC409B处中断并转储eax。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VS2010调试器无法在监视窗口中正确跟踪变量,VS2013仍然存在此错误吗?

来自分类Dev

调试器监视窗口中的VS2015 LINQ

来自分类Dev

VS2013似乎无法正确附加-调试器已附加但未配置为调试此未处理的异常

来自分类Dev

C ++ VS2010调试器在超出循环范围的循环变量上表现异常

来自分类Dev

VS2013调试器无法再解析包含源代码路径的系统环境变量

来自分类Dev

VS2013调试器无法再解析包含源代码路径的系统环境变量

来自分类Dev

调试器监视窗口代码页

来自分类Dev

VS2013调试器找不到Qt源

来自分类Dev

VS2013调试器找不到Qt源

来自分类Dev

VS2013调试器找不到Qt源

来自分类Dev

VS2013与VS2010不同,我无法从Windows应用程序访问网络驱动器

来自分类Dev

如何重置VisualStudio(VS2010,VS2012)调试器缓存?

来自分类Dev

LINQ设计时间错误从VS2010升级到VS2013

来自分类Dev

LINQ设计时间错误从VS2010升级到VS2013

来自分类Dev

错误SIPEPS,版本= 5.0.0.0 UCMA 4.0 VS2010 / VS2013

来自分类Dev

从VS2010升级到VS2013现在我无法发布

来自分类Dev

VS 2013无法附加64位调试器

来自分类Dev

在VS2010调试器中可视化OpenCV映像

来自分类Dev

无法从VS2010进行调试

来自分类Dev

如何解决从VS2010升级到VS2013的项目中的链接器错误,在该项目中,链接器正在寻找不存在的MFC库文件?

来自分类Dev

在VS2013调试器中将字节数组转换为结构

来自分类Dev

使用外部调试器时在VS2013中使用NatVis文件

来自分类Dev

将VS2013和VS2010与TFS2010一起使用

来自分类Dev

VS调试器无法关闭

来自分类Dev

监视窗口中的$ ReturnValue在VS2015中不起作用

来自分类Dev

我可以控制调试器窗口中浮点和双精度变量变量显示的位数吗?

来自分类Dev

在VS2010中调试cpp错误值

来自分类Dev

在VS2010中调试cpp错误值

来自分类Dev

在VS 2013调试器中确定引用相同值的变量

Related 相关文章

  1. 1

    VS2010调试器无法在监视窗口中正确跟踪变量,VS2013仍然存在此错误吗?

  2. 2

    调试器监视窗口中的VS2015 LINQ

  3. 3

    VS2013似乎无法正确附加-调试器已附加但未配置为调试此未处理的异常

  4. 4

    C ++ VS2010调试器在超出循环范围的循环变量上表现异常

  5. 5

    VS2013调试器无法再解析包含源代码路径的系统环境变量

  6. 6

    VS2013调试器无法再解析包含源代码路径的系统环境变量

  7. 7

    调试器监视窗口代码页

  8. 8

    VS2013调试器找不到Qt源

  9. 9

    VS2013调试器找不到Qt源

  10. 10

    VS2013调试器找不到Qt源

  11. 11

    VS2013与VS2010不同,我无法从Windows应用程序访问网络驱动器

  12. 12

    如何重置VisualStudio(VS2010,VS2012)调试器缓存?

  13. 13

    LINQ设计时间错误从VS2010升级到VS2013

  14. 14

    LINQ设计时间错误从VS2010升级到VS2013

  15. 15

    错误SIPEPS,版本= 5.0.0.0 UCMA 4.0 VS2010 / VS2013

  16. 16

    从VS2010升级到VS2013现在我无法发布

  17. 17

    VS 2013无法附加64位调试器

  18. 18

    在VS2010调试器中可视化OpenCV映像

  19. 19

    无法从VS2010进行调试

  20. 20

    如何解决从VS2010升级到VS2013的项目中的链接器错误,在该项目中,链接器正在寻找不存在的MFC库文件?

  21. 21

    在VS2013调试器中将字节数组转换为结构

  22. 22

    使用外部调试器时在VS2013中使用NatVis文件

  23. 23

    将VS2013和VS2010与TFS2010一起使用

  24. 24

    VS调试器无法关闭

  25. 25

    监视窗口中的$ ReturnValue在VS2015中不起作用

  26. 26

    我可以控制调试器窗口中浮点和双精度变量变量显示的位数吗?

  27. 27

    在VS2010中调试cpp错误值

  28. 28

    在VS2010中调试cpp错误值

  29. 29

    在VS 2013调试器中确定引用相同值的变量

热门标签

归档