Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
#1

Принципы отладки в MVS 2012 - C++

31.08.2013, 18:34. Просмотров 658. Ответов 17
Метки нет (Все метки)

Привет киберфорумцы!

Подскажите пожалуйста, как в режиме отладки путешествовать только по написанному мной коду не, заходя в файлы предоставляемые MVS? А то начинаешь искать ошибку, выставив точку останова, для того, чтобы отследить поведение некоторых переменных внутри функции, тыкаешь Ф11 (чтобы перепрыгнуть из мейн в функцию), а забрасывает в какой-нибудь бесконечный ostream или streambuf... Вот хотелось бы, чтобы "хождение" было только по моему коду. Как это организовать (платформа MVS 2012)?
Также очень хотелось бы отслеживать значения некоторых переменных внутри функции. Делаю следующее: создаю свои контрольные значения (пишу имя переменных, создавая контрольные значения), но они почему-то не определяются (см. картинку).
Почему значение itsLen на данном скрин-шоте не определилось? Ведь программа уже должна его определить? Или я не правильно использую эту функцию?
0
Миниатюры
Принципы отладки в MVS 2012  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 18:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Принципы отладки в MVS 2012 (C++):

MVS 2012 Кривая подсветка синтаксиса - C++
Запускаю студию, пишу какое-то время, а потом начинается такая херня (см. скрин). Что делать? Переустанавливать не комельфо, если конечно...

MVS 10 vs QT - C++
Мне хотелось бы узнать что лучше QT или Microsoft Visual Stidio 2010. Учусь программировать на c++, для будущих проектов мне нужен...

MVS 2010 - C++
Пишу на Microsoft visual studio 2010 на с++. Проблема такая: После сборки программы и сохранения компонентов беру ексешник в папочке...

Компиляция в mvs - C++
Приветствую всех. У меня установлен Microsoft Visual Studio 2015. Как скомпилировать C++ программу, которая не использует .NET, чтобы...

Компиляция на MVS 2013 - C++
Подскажите как компилировать exe файлы что бы они работали где то помимо моего компьютера. На других компьютерах пишет "Запуск невозможен,...

Импорт библиотеки в MVS - C++
Здравствуйте! Нужна небольшая помощь знающих! Скачал библиотеку cURL (работа с сетью и вебом), применив которую в своем коде получаю...

17
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
31.08.2013, 18:41 #2
Цитата Сообщение от BESSON_off Посмотреть сообщение
ыкаешь Ф11 (чтобы перепрыгнуть из мейн в функцию),
кнопка F10 без захода в функцию
но если ты хочешь заходить в свою функцию а в чужие не хочешь то не получится или заходишь или нет
тут может помочь выход из функции ctrl+F11, т.е когда нажимаешь возвращаешься в то место откуда функция вызвана
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
31.08.2013, 18:42 #3
ставить брейкпойнты в тех функциях, в которые хочешь зайти и не ставить в тех, в которые не хочешь
Жать Ф11 для входа в функцию, в которую хочешь зайти и Ф10, наоборот через которую хочешь прыгнуть
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
31.08.2013, 18:45 #4
Цитата Сообщение от BESSON_off Посмотреть сообщение
Почему значение itsLen на данном скрин-шоте не определилось?
а что это? где определена?
Цитата Сообщение от BESSON_off Посмотреть сообщение
Также очень хотелось бы отслеживать значения некоторых переменных внутри функции.
можешь подвести курсор мыши к переменной (в коде) и подождать,должно высветится
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
31.08.2013, 18:56  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
а что это? где определена?
Она определена в объявлении класса и заполняется конструктором. И если я выведу ее в этом месте в консоль(cout), то мне покажут значение itsLen, а путем создания "Контрольного значения" так не получается.
Я ведь правильно понял, что создать "Контрольное значение" - это нужно написать имя переменной, которую нужно отследить и как только программа определит это значение, оно сразу же покажется напротив имени "Контрольного значения"?

А по поводу захода в функцию: как быть если нужно отследить значение какого-либо перегруженного оператора в какой-либо функции, которая вызывается другой функцией? Т.е. вопрос в том - точку останова можно устанавливать в функции main, а дальше уже оттуда перебежками (Ф10) до нужной функции, после чего заходим в нее (Ф11) и далее уже пошагово отслеживаем через "Контрольные значения" нужные переменные. Все так?
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
31.08.2013, 20:03 #6
Цитата Сообщение от BESSON_off Посмотреть сообщение
Т.е. вопрос в том - точку останова можно устанавливать в функции main, а дальше уже оттуда перебежками (Ф10) до нужной функции, после чего заходим в нее (Ф11)
а почему не поставить точку останова сразу в нужной функции?
Цитата Сообщение от BESSON_off Посмотреть сообщение
это нужно написать имя переменной, которую нужно отследить и как только программа определит это значение, оно сразу же покажется напротив имени "Контрольного значения"?
все правильно
но может ты ошибся в написании имени
проще захватить в листинге имя переменной и перетащить в окошко
есть еще закладка типа "Автоматические значения"(точно не помню) там указываются переменные видимые на данном участке кода
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.08.2013, 20:06 #7
Цитата Сообщение от BESSON_off Посмотреть сообщение
а дальше уже оттуда перебежками (Ф10) до нужной функции, после чего заходим в нее (Ф11)
Можно сразу в ней поставить точку останова.
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
31.08.2013, 20:07  [ТС] #8
Цитата Сообщение от ValeryS Посмотреть сообщение
а почему не поставить точку останова сразу в нужной функции?
Если точка стоит не в мейне, то она почему то во внимания отладчика не берется, он ее пролетает.
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.08.2013, 20:10 #9
Контрольные значения бывают глючат (не так давно тема была). Можно попробовать удалить значения и снова добавить.
Отладка в Visual Studio 2010, не отображаются контрольные переменные

Добавлено через 1 минуту
Цитата Сообщение от BESSON_off Посмотреть сообщение
Если точка стоит не в мейне, то она почему то во внимания отладчика не берется, он ее пролетает.
Глюки. Если заход есть, то и точка останова должна сработать. Удалить точку и добавить.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
31.08.2013, 20:13 #10
Цитата Сообщение от BESSON_off Посмотреть сообщение
Если точка стоит не в мейне, то она почему то во внимания отладчика не берется, он ее пролетает.
а ты не Релиз ли версию отлаживаешь?
если её то забей, там оптимизатор поработал и от твоего кода мало что осталось
по этому может не видеть и твою переменную, оптимизатор её мог просто выкинуть
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
31.08.2013, 20:40  [ТС] #11
Цитата Сообщение от ValeryS Посмотреть сообщение
а ты не Релиз ли версию отлаживаешь?
Именно ее.
Т.е. правильно будет выставлять DEBUG на момент отладки, а на момент сборки Release?

В предложенной ветке вычитал следующее: "Откройте окно "Стек вызовов". В нём будет отображена функция, в которой произошла остановка, а так же иерархия вызовов. Перемещаясь по этим функциям, вы будете видеть различные переменные.

Область видимости и все дела."
- что за окно "Стек вызовов"? Где оно?
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
31.08.2013, 20:42 #12
Цитата Сообщение от BESSON_off Посмотреть сообщение
Т.е. правильно будет выставлять DEBUG на момент отладки, а на момент сборки Release?
да
она ведь так и называется DEBUG(отладка)
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
31.08.2013, 20:50  [ТС] #13
А есть какие-либо методы, расширения, дополнения, сторонние программы, которые упрощают отладку в MVS2012 или делают ее более наглядной?
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
31.08.2013, 20:55 #14
пример упрощения можете привести? куда уж проще то? попробуйте коммандлайн отладку в каком-нибудь GDB, вот это я понимаю неудобно. а в студии - самая нормальная отладка из всех, что доводилось пробовать.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
31.08.2013, 20:59 #15
Цитата Сообщение от BESSON_off Посмотреть сообщение
Область видимости и все дела." - что за окно "Стек вызовов"? Где оно?
у тебя она не открыта( на скриншоте) полазь по меню "Вид","Отладка" найдешь много вкусностей
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 20:59
Привет! Вот еще темы с ответами:

Неурядица с компиляцией, MVS - C++
Хочу заполнить двухмерный динамический массив с клавиатуры, на что после ввода размерности и первого числа выскакивает следующее сообщение:...

Учебники/уроки по MVS - C++
Сорри, если не туда пишу. Очень нужна литература по изучению C++ в связке с Microsoft Visual Studio. В инете много материала по MVS, но...

Что такое MVS? - C++
И для чего нужно?В гугле ничё не нашёл.

Не компилирует в MVS 2008 - C++
Господамы вот такая программа для проверки устного умножения в MVS 2008 ругается на time, srand и rand, в чем может быть проблема? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
31.08.2013, 20:59
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru