Visual Studio 中的 Google gflags 库:无法检查FLAGS_变量

Google gflags library in visual studio: Can't inspect FLAGS_ variables

本文关键字:检查 FLAGS 变量 中的 Studio Google gflags Visual      更新时间:2023-10-16

我使用visual studio 2015在windows中构建了谷歌gflags。构建的是Debug构建(因此设置了Program Database(/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_变量的开源库的代码。看不到这些变量的内容会使任务更加困难。

我找到了一个解决方法。每个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_##名称。但是,Visual Studio调试器使用忽略了这一点,并且需要这些变量中每一个的命名空间。我想下一个问题是如何让visualstudio使用这些using语句,这样我就可以将鼠标指针悬停在变量上,查看其值。