Ошибка отладки - PullRequest
       34

Ошибка отладки

0 голосов
/ 01 сентября 2011

Я получаю эту ошибку с моим кодом C ++: http://imageshack.us/photo/my-images/193/vcerror.png/

Единственная проблема в том, что она не указывает мне, где проблема ... Я понимаю, что строковый индекс находится вне диапазона, ноЯ понятия не имею, где это может быть.

Мне было интересно, если я все-таки смогу найти где это?У меня есть грубая идея, поэтому я поставил точку останова, но то, как VC ++ делает точки останова, ужасно.Я пошаговый, но он показывает только код из самих файлов C ++, а не мой собственный код.

Итак, я перехожу, и сразу же появляется ошибка.

Как я могу отследитьрешить эту проблему?

1 Ответ

1 голос
/ 01 сентября 2011

По сути, вам нужно посмотреть на стек вызовов и настроить все ваши символы.

Я собираюсь сделать дикое предположение и предположить, что вы, возможно, не знаете, как использовать окно "стек вызовов"..

В сеансе отладки вашей программы и без установки точек останова разрешите вашей программе работать до тех пор, пока она не попадет в диалог подтверждения.Нажмите «повторить», чтобы передать управление отладчику.Может появиться другое диалоговое окно с предложением «прервать» или «продолжить».Выберите перерыв.На этом этапе вы должны быть разбиты на отладчик.

Затем убедитесь, что вы видите стек вызовов и у вас есть хотя бы одно окно наблюдения.

Debug->Windows->Call Stack.
Debug->Windows->Watch->Watch 1

Вы можете дважды щелкнуть полюбой элемент в окне стека вызовов для перехода к точной строке кода, к которой ожидается возвращение выполнения.(Иногда маленькая стрелка в окне редактора указывает на следующую строку кода, которая будет выполняться после возврата предыдущего вызова).Дважды щелкните строку функции в окне стека вызовов, которое находится непосредственно под верхней строкой стека вызовов.Это скорее всего std :: basic_string :: operator.Какое значение передается в эту функцию?Если наведение на имя переменной не работает, добавьте его в окно «Смотреть».Также добавьте часы для «this», чтобы вы могли проанализировать фактический размер и емкость строки.

Дважды щелкните по вызову функции в стеке вызовов ниже того места, где вы сейчас находитесь.Это должно привести вас к фактической ошибочной строке кода в вашей программе.Добавьте еще одно наблюдение за строковой переменной и сможете выяснить, что пошло не так.

Остальное зависит от вас.

Я предполагаю, что это отдельный EXE-проект со всей сборкойпо IDE.Если это не так, убедитесь, что файлы PDB из каждого созданного двоичного файла находятся в том же каталоге, что и соответствующий двоичный файл.Опять же, если это простой EXE-проект в Visual Studio, это происходит автоматически.Просто чтобы быть уверенным, сначала убедитесь, что вы «очистили» свою сборку, а затем полностью перестроили.Это иногда исправляет ошибки отладки.

...