0

我已经使用 Visual Studio 2015 在 Windows 中构建了google gflags。构建的是一个调试版本(因此设置了程序数据库(/Zi)),我正在逐步浏览 gflags_unittest_main.cc。单元测试成功通过。但是,在调试时我看不到 FLAGS_## 变量的内容。

例如,gflags_unittest_main.cc 的第 1515 行是

FLAGS_changed_bool2 = true;

我在监视窗口中看不到 FLAGS_changed_bool2 的值。我尝试在 FLAGS_changed_bool2 前面添加 google:: 和 gflags:: 命名空间,但它只是说标识符未定义。这里它说您可以像普通变量一样访问这些标志。

为什么调试时看不到这些变量的值?我能做些什么来见他们?也许一些构建选项?

我正在尝试理解另一个使用 gflags 并具有数百个 FLAGS_ 变量的开源库的代码。无法看到这些变量的内容使任务更加困难。

4

1 回答 1

1

我找到了解决方法。每个 FLAGS_ 变量都是在命名空间内创建的,命名空间包括类型的短标识符(参见 gflags.h 中的 DEFINE_VARIABLE 宏)。例如,fLI 表示整数,fLB 表示布尔值,fLS 表示字符串等。

因此,如果我在监视窗口中添加以下内容:

fLB::FLAGS_changed_bool2  
fLI64::FLAGS_this_is_an_int64_variable

我可以看到他们的价值观。

DEFINE_VARIABLE 宏添加了一个 using 语句

using fL##shorttype::FLAGS_##name

在 fL##shorttype 内部定义变量之后,它允许用户代码直接引用 FLAGS_##name。但是,Visual Studio 调试器会忽略此使用,并且需要每个变量的命名空间。我想下一个问题是如何让 Visual Studio 使用这个 using 语句,以便我可以将鼠标指针悬停在变量上以查看其值。

于 2015-11-12T12:45:38.067 回答