7

问题:

如何使用 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- 如果我错了,请纠正我
4

2 回答 2

9

尝试:

dt -r i

这将递归地转储迭代器。其中一名成员应该是您寻求的信息。冗长,但有效。

于 2009-04-16T21:06:49.083 回答
1

困难在于*i调用operator*迭代器上的函数调用。您想要的字符串可能由_Myptrat指向0x009c6198

于 2009-04-16T21:07:15.900 回答