【问题标题】:Value of a variable using WinDbg使用 WinDbg 的变量值
【发布时间】:2009-04-16 20:57:17
【问题描述】:

问题:

如何使用 WinDbg 显示 C++ iterator如下图所示:

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 的值 - 如果我错了,请纠正我

【问题讨论】:

    标签: c++ winapi windbg


    【解决方案1】:

    试试:

    dt -r i
    

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

    【讨论】:

    • 感谢 jeffamaphone!数据位于+0x000 _Buf
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多