2015-11-09 23 views
0

我在windows自带google gflags内置的调试版本(所以程序数据库(/ ZI)时),我踩着通过gflags_unittest_main.cc。 单元测试成功通过。但是,在调试时,我看不到FLAGS _ ##变量的内容。谷歌GFLAGS库在Visual Studio:使用的Visual Studio 2015年 不能检查FLAGS_变量

例如,gflags_unittest_main.cc的线1515是

FLAGS_changed_bool2 = true; 

我看不到在监视窗口FLAGS_changed_bool2的价值。我曾尝试在FLAGS_changed_bool2前添加google ::和gflags :: namespaces,但它只是说标识符是未定义的。 Here它说你可以像普通变量一样访问这些标志。

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

我想了解另一个使用gflags并且有数百个FLAGS_变量的开源库的代码。不能看到这些变量的内容使得任务更加困难。

+0

调试器不知道任何关于这些stoopid宏技巧。查看[/P](https://msdn.microsoft.com/en-us/library/8z9z0bx6.aspx)的输出以了解真实标识符名称的样子。 –

+0

感谢您的建议。我使用/ P选项生成了gflags_unittest_main.i文件,我提到的示例变量仍称为FLAGS_changed_bool2 – martinako

回答

0

我找到了解决方法。每个FLAGS_变量都在名称空间内创建,其中包含该类型的简短标识符(请参阅gflags.h中的DEFINE_VARIABLE宏)。例如,FLI整数,FLB为BOOL,FLS弦乐等

所以,如果我添加到观察窗口:

fLB::FLAGS_changed_bool2 
fLI64::FLAGS_this_is_an_int64_variable 

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

的DEFINE_VARIABLE宏FL ## shorttype,这允许用户代码_ ##名直接引用FLAGS内的变量的定义后增加了一个使用语句

using fL##shorttype::FLAGS_##name 

。但是,Visual Studio调试器会忽略此使用,并且需要每个变量的名称空间。我想下一个问题是如何让Visual Studio使用这个使用语句,以便我可以将鼠标指针悬停在变量a上查看其值。