Value of a variable using WinDbg

10,649

Solution 1

Try:

dt -r i

Which will recursively dump the iterator. One of the members should be the info you seek. Verbose, but effective.

Solution 2

The difficulty is that *i invokes a function call to operator* on the iterator. The string you want is likely being pointed to by _Myptr at 0x009c6198.

Share:
10,649
Aaron
Author by

Aaron

I find bugs

Updated on June 04, 2022

Comments

  • Aaron
    Aaron almost 2 years

    Question:

    How to display the value of a C++ iterator using WinDbg, illustrated below:

    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()))
            {
    

    Note:

    Using ?? evaluate C++ expression command, which displays the following:

    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> >
    
    • Can another command display/print the value of *i - please correct me if I'm wrong
  • Aaron
    Aaron about 15 years
    Thanks jeffamaphone! Data was at +0x000 _Buf