2017-08-16 84 views
1

我有以下简单代码的2个文件。在调试器中查看重复的全局变量?

Linkertest.cpp

#include "stdafx.h" 
#include "Foobar.h" 

char x = 5; 
char y = 5; 

int main() 
{ 
    ChangeX(); 
    x = 'a'; 
    return 0; 
} 

和Foobar.cpp

#include "stdafx.h" 

int x; 

void ChangeX() 
{ 
    x = -1; 
} 

foobar.h中

#pragma once 

extern void ChangeX(); 

当步进在Visual Studio 2015年调试器的代码,调试器窗口选择显示值int x; (忽略char x)。 (我明白这不是一件好事)。看看反汇编(和映射文件),我可以看到链接器正确地给int x和char x单独的内存分配,并正确地写入它们。有没有人知道一种方法让调试器显示char x的值?

感谢

+0

它应该显示取决于范围您目前内正确的X。如果不是的话,你应该向微软报告一个错误。那就是如果有人可以复制这种行为。 – drescherjm

+2

你可以请你张贴代码。 –

+0

这就是当你在不同的范围内使用相同名称的不同变量隐藏*变量时发生的情况。但是,使用VS2015(以及更高版本和更早版本),我认为你可以切换文件,然后使用游标(指针),你可以从'Linkertest.cpp'中选择变量并添加一个监视。然后它应该引用正确的变量。 –

回答

1

我使用VS2015和VS2017测试。

的VS2015确实有这个问题:

enter image description here

但在VS2017现在工作得很好:

enter image description here

因此,对于这个问题,如果可能的话,我建议你使用VS2017版本。

当然,如果你只需要使用VS2015,你也可以在这里报告此反馈:

https://connect.microsoft.com/VisualStudio/feedback/CreateFeedback.aspx

+0

谢谢,我们很快就会切换到VS 2017。很高兴听到这个问题解决! –