在Visual Studio调试器中查看命名空间全局变量?

时间:2010-06-06 06:19:16

标签: visual-studio debugging namespaces global-variables

在Visual Studio 2008中调试非托管C ++项目时,我偶尔会想看到全局变量的值。我们没有很多这些,但那些都在名为'global'的名称空间中声明。 e.g。

namespace global
{
  int foo;
  bool bar;

  ...
}

问题是当代码在断点处停止时,默认调试工具提示(从指向变量名称)和quickwatch(变量名称上的shift-f9)不考虑名称空间,因此赢了不行。

所以例如我可以指向'foo'并且没有任何结果。如果我在foo上移动-f9,它会调出快速表,然后说'CXX0017:错误:符号“foo”未找到'。我可以通过在快速监视窗口中手动编辑变量名称来解决这个问题,并在其前面添加“global ::”(考虑到每次想要快速观察时都必须这样做,这很麻烦),但是没有修复工具提示我可以解决。设置项目属性的“默认命名空间”没有帮助。

我如何告诉VS调试器使用它已经知道变量被声明的命名空间(因为它在那里有声明),或者,如果它没有,则告诉它一个默认命名空间来查找变量找不到他们?

我的google-fu未能找到答案。 This report列出了同样的问题,MS称其为“按设计”,但即使如此,我希望有一些方法可以解决它(也许巧妙地使用autoexp.dat?)

2 个答案:

答案 0 :(得分:1)

在源代码中使用包含命名空间的全名解决了它。

例如:写

global::bar = (global::foo==0)

而不是

bar = (foo==0)

答案 1 :(得分:1)

如果符号位于另一个DLL中,则可以在“监视”窗口中使用以下语法:

cleaned_data

e。 G。

{,,<dllname>}<fully qualified symbol name>

请参见https://docs.microsoft.com/en-us/visualstudio/debugger/context-operator-cpp?view=vs-2017或搜索“ Visual Studio上下文运算符”。