【发布时间】:2011-02-28 07:48:39
【问题描述】:
在 Visual Studio 2008 中调试非托管 C++ 项目时,我偶尔想查看全局变量的值。我们没有很多这些,但那些都在名为“全局”的命名空间中声明。例如
namespace global
{
int foo;
bool bar;
...
}
问题在于,当代码在断点处停止时,默认的调试工具提示(从指向变量名)和 quickwatch(在变量名上按 shift-f9)没有考虑命名空间,因此赢了不行。
例如,我可以指向“foo”,但什么也没有出现。如果我在 foo 上按 shift-f9,它会调出 quickwatch,然后显示 'CXX0017: Error: symbol "foo" not found'。我可以通过在 quickwatch 窗口中手动编辑变量名称来解决这个问题,并在其前面加上“global::”(考虑到每次想要快速观察时都必须这样做,这很麻烦),但工具提示没有修复我可以解决。设置项目属性的“默认命名空间”没有帮助。
我如何告诉 VS 调试器使用它已经知道在其中声明了变量的命名空间(因为它在那里有声明),或者,如果没有,告诉它一个默认命名空间来查找变量没找到?
我的 google-fu 找不到答案。 This report 列出了同样的问题,MS 说这是“设计使然”,但即便如此,我还是希望有一些方法可以解决它(也许巧妙地使用 autoexp.dat?)
【问题讨论】:
-
你很幸运你的命名空间有一个名字。如果变量位于未命名的命名空间中,甚至无法在调试器中看到它们的值(请参阅stackoverflow.com/questions/1334989/…)。
标签: visual-studio debugging namespaces global-variables