visual studio中的Google gflags库:无法检查FLAGS_变量

时间:2015-11-09 15:32:45

标签: c++ visual-studio visual-studio-2015 debug-symbols gflags

我使用visual studio 2015在Windows中构建了google 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 ::名称空间,但它只是说标识符未定义。 Here它表示你可以像普通变量一样访问这些标志。

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

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

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。每个FLAGS_变量都在名称空间内创建,其中包含该类型的短标识符(请参阅gflags.h中的DEFINE_VARIABLE宏)。例如,fLI表示整数,fLB表示bool,fLS表示String等。

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

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语句,这样我就可以将鼠标指针悬停在变量上,看看它的值。