2017-08-16 83 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。很高興聽到這個問題解決! –