Значение переменной с использованием WinDbg - PullRequest
7 голосов
/ 17 апреля 2009

Вопрос:

Как отобразить значение C ++ итератора с использованием WinDbg, проиллюстрировано ниже:

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 ]

9 голосов
/ 17 апреля 2009

Попробуйте:

dt -r i

Который будет рекурсивно выводить итератор. Одним из участников должна быть информация, которую вы ищете. Многословно, но эффективно.

1 голос
/ 17 апреля 2009

Сложность в том, что *i вызывает вызов функции для operator* на итераторе. Вероятно, на нужную вам строку указывает _Myptr в 0x009c6198.

...