2009-04-16 29 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处指向的字符串。