2009-04-16 10 views
6

Domanda:valore di una variabile utilizzando WinDbg

Come visualizzare il valore di un C++iteratore utilizzando WinDbg, illustrata di seguito:

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

Nota:

utilizzando ?? valutare comando espressione C++, che visualizza il seguente:

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> > 
  • Può un altro comando display/stampa il valore di *i - per favore correggetemi se sbaglio

risposta

8

Prova:

dt -r i 

Quale scaricherà in modo ricorsivo l'iteratore. Uno dei membri dovrebbe essere l'informazione che cerchi. Verboso, ma efficace.

+0

Grazie jeffamaphone! I dati erano a '+ 0x000 _Buf' – Aaron

1

La difficoltà è che *i richiama una chiamata di funzione a operator* sull'iteratore. È probabile che la stringa desiderata venga indicata da _Myptr allo 0x009c6198.

Problemi correlati