Я начинаю С++. Когда я пытаюсь отлаживать код С++, используя следующие конструкции, такие как строка, вектор некоторых родных типов, STL и т.д., Отладка становится утомительной. Я использую MS Visual Studio 2010/Visual С++ 2010 Express.
например.
- При использовании строки, как показано ниже:
string str;
getline(cin, str);
for(i=0; i<str.size();i++)
В окне просмотра не отображаются значения для str [i]. Он говорит, что перегруженный оператор не найден. Мне нужно вручную свернуть всю строчную переменную str и увидеть элемент char в этом конкретном индексе, который становится громоздким.
- При использовании вектора, как показано ниже, та же проблема. Если я установил переменную v1 [k] в окне просмотра той же самой ошибки.
vector<int> v1(100);
for(int k=0;k<100;k++)
{
v1.push_back(k);
}
- Пробовал использовать простые итераторы STL, такие как it.begin(), it.end() и алгоритмы вроде sort(), reverse(), я не мог отлаживать внутри этих функций путем шага или не мог установить точку останова в (я знаю, что они находятся в STL или в какой-то такой стандартной библиотеке, они были бы уверены в отсутствии ошибок, но их можно использовать неправильно, передав что-то недействительное/неправильное)
Исходя из использования языка C на многие годы, на С++, я нахожу это отсутствие "способности отладки" или некоторых ограничений в этом, болезненным, в то время как я пытаюсь понять большие куски кода на С++, написанные кем-то еще, Работа.
Мои вопросы -
Каковы эффективные способы отладки рабочего кода для понимания его функциональности при использовании идиом, таких как шаг, точки останова, точки наблюдения, окна просмотра. Является ли какой-либо конкретный отладчик лучше/хуже других (например, лучше gdb) или есть какие-либо специальные трюки/советы, которые помогут отлаживать.
В общем, как анализировать код на С++, чтобы понять его работу?