我有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值的方法?

谢谢

最佳答案

我使用VS2015和VS2017进行了测试。

VS2015确实存在以下问题:

c++ - 在调试器中查看重复的命名全局变量?-LMLPHP

但是它现在在VS2017中运行良好:

c++ - 在调试器中查看重复的命名全局变量?-LMLPHP

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

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

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

10-04 23:17