使用WinDbg的变量值

时间:2009-04-16 20:57:18

标签: c++ winapi 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的值 - 如果我错了请纠正我

2 个答案:

答案 0 :(得分:9)

尝试:

dt -r i

将以递归方式转储迭代器。其中一位成员应该是您寻求的信息。详细,但有效。

答案 1 :(得分:1)

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