2009-04-16 13 views
6

Pregunta:valor de una variable utilizando WinDbg

Cómo visualizar el valor de un C++iterador utilizando WinDbg, ilustrado a continuación:

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:

¿Cómo usar ? evaluar C++ comando de expresión, que muestra lo siguiente:

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> > 
  • Puede otro comando de visualización /impresión el valor de *i - por favor, corríjanme si me equivoco

Respuesta

8

Probar:

dt -r i 

Lo que repetidamente volcará el iterador. Uno de los miembros debería ser la información que buscas. Verbo, pero efectivo.

+0

Gracias jeffamaphone! Los datos estaban en '+ 0x000 _Buf' – Aaron

1

La dificultad es que *i invoca una llamada a la función operator* en el iterador. La cadena que desea probablemente esté apuntando al _Myptr al 0x009c6198.

Cuestiones relacionadas