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

标签 visual-studio debugging namespaces global-variables

在 Visual Studio 2008 中调试非托管 C++ 项目时,我偶尔想查看一个全局变量的值。我们没有很多这些,但那些都在一个名为“全局”的命名空间中声明。例如

namespace global
{
  int foo;
  bool bar;

  ...
}

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

例如,我可以指向 'foo' 而什么也没有出现。如果我在 foo 上按 shift-f9,它会显示 quickwatch,然后显示“CXX0017:错误:未找到符号“foo””。我可以通过在 quickwatch 窗口中手动编辑变量名称来解决这个问题,在它前面加上“global::”(考虑到你每次想要 quickwatch 都必须这样做,这很麻烦),但没有修复工具提示我可以解决。设置项目属性的“默认命名空间”无济于事。

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

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

最佳答案

在源代码中使用包含命名空间的全名为我解决了这个问题。

例如:写

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

代替
bar = (foo==0)

关于visual-studio - 在 Visual Studio 调试器中查看命名空间全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983316/

相关文章:

r - 使用 roxygen2 生成命名空间 : a small example or template

asp.net-mvc - 仅发布 Controller

objective-c - iOS 模拟器崩溃日志

C++ DLL调试

c++ - 为什么 "using namespace std;"被认为是不好的做法?

C#:属性/字段命名空间歧义

visual-studio - VS 中的 typescript 调试不适用于 Aurelia JSPM 设置

c++ - Visual C++ - 从链接器>输入>附加依赖项中排除文件

c# - 在 C# 中调试时,Visual Studio 如何评估属性?

debugging - 随着代码变得越来越复杂,有哪些好的策略可以修复错误?