2009-04-16 35 views
6
可變的

問題:值使用的WinDbg

如何顯示值使用WinDbg的一個C++迭代,如下所示

for (vector<string>::iterator i = args.begin(); i != args.end(); i++) 
//omitted 
//for instance: 
} else if (*i == "-i") {//attempting to display the value of *i 
     ++i; 
     if (!::PathFileExistsA(i->c_str())) 
     { 

注:

使用??評價C++表達式命令,該命令顯示以下內容:

0:000> ?? i 

class std::_Vector_iterator<std::basic_string<char, 
std::char_traits<char>, 
std::allocator<char> >, 
std::allocator<std::basic_string<char, 
std::char_traits<char>, 
std::allocator<char> > > > 

    +0x000 _Mycont   : 0x0012ff40 std::_Container_base_secure 
    +0x004 _Mynextiter  : (null) 
    +0x008 _Myptr   : 0x009c6198 

std::basic_string<char,std::char_traits<char>,std::allocator<char> > 
  • 能的*i另一個命令顯示/打印值 - 請糾正我,如果我錯了

回答

8

嘗試:

dt -r i 

這將遞歸轉儲迭代器。其中一位成員應該是你所尋求的信息。詳盡,但有效。

+0

謝謝jeffamaphone!數據在'+ 0x000 _Buf` – Aaron 2009-04-16 21:13:18

1

難度在於*i在迭代器上調用operator*的函數調用。您想要的字符串可能是_Myptr0x009c6198處指向的字符串。