2015-11-09 24 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上查看其值。