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

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

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

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

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

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

Подскажите пожалуйста, как в режиме отладки путешествовать только по написанному мной коду не, заходя в файлы предоставляемые MVS? А то начинаешь искать ошибку, выставив точку останова, для того, чтобы отследить поведение некоторых переменных внутри функции, тыкаешь Ф11 (чтобы перепрыгнуть из мейн в функцию), а забрасывает в какой-нибудь бесконечный ostream или streambuf... Вот хотелось бы, чтобы "хождение" было только по моему коду. Как это организовать (платформа MVS 2012)?
Также очень хотелось бы отслеживать значения некоторых переменных внутри функции. Делаю следующее: создаю свои контрольные значения (пишу имя переменных, создавая контрольные значения), но они почему-то не определяются (см. картинку).
Почему значение itsLen на данном скрин-шоте не определилось? Ведь программа уже должна его определить? Или я не правильно использую эту функцию?
Миниатюры
Принципы отладки в MVS 2012  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 18:34     Принципы отладки в MVS 2012
Посмотрите здесь:
MVS 2012 Кривая подсветка синтаксиса C++
C++ MVS 10 vs QT
C++ MVS 2010
Компиляция в mvs C++
Неурядица с компиляцией, MVS C++
C++ Компиляция на MVS 2013
C++ Импорт библиотеки в MVS
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
31.08.2013, 18:41     Принципы отладки в MVS 2012 #2
Цитата Сообщение от BESSON_off Посмотреть сообщение
ыкаешь Ф11 (чтобы перепрыгнуть из мейн в функцию),
кнопка F10 без захода в функцию
но если ты хочешь заходить в свою функцию а в чужие не хочешь то не получится или заходишь или нет
тут может помочь выход из функции ctrl+F11, т.е когда нажимаешь возвращаешься в то место откуда функция вызвана
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
31.08.2013, 18:42     Принципы отладки в MVS 2012 #3
ставить брейкпойнты в тех функциях, в которые хочешь зайти и не ставить в тех, в которые не хочешь
Жать Ф11 для входа в функцию, в которую хочешь зайти и Ф10, наоборот через которую хочешь прыгнуть
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
31.08.2013, 18:45     Принципы отладки в MVS 2012 #4
Цитата Сообщение от BESSON_off Посмотреть сообщение
Почему значение itsLen на данном скрин-шоте не определилось?
а что это? где определена?
Цитата Сообщение от BESSON_off Посмотреть сообщение
Также очень хотелось бы отслеживать значения некоторых переменных внутри функции.
можешь подвести курсор мыши к переменной (в коде) и подождать,должно высветится
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
31.08.2013, 18:56  [ТС]     Принципы отладки в MVS 2012 #5
Цитата Сообщение от ValeryS Посмотреть сообщение
а что это? где определена?
Она определена в объявлении класса и заполняется конструктором. И если я выведу ее в этом месте в консоль(cout), то мне покажут значение itsLen, а путем создания "Контрольного значения" так не получается.
Я ведь правильно понял, что создать "Контрольное значение" - это нужно написать имя переменной, которую нужно отследить и как только программа определит это значение, оно сразу же покажется напротив имени "Контрольного значения"?

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

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

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

Область видимости и все дела."
- что за окно "Стек вызовов"? Где оно?
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
31.08.2013, 20:42     Принципы отладки в MVS 2012 #12
Цитата Сообщение от BESSON_off Посмотреть сообщение
Т.е. правильно будет выставлять DEBUG на момент отладки, а на момент сборки Release?
да
она ведь так и называется DEBUG(отладка)
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 344
31.08.2013, 20:50  [ТС]     Принципы отладки в MVS 2012 #13
А есть какие-либо методы, расширения, дополнения, сторонние программы, которые упрощают отладку в MVS2012 или делают ее более наглядной?
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
31.08.2013, 20:55     Принципы отладки в MVS 2012 #14
пример упрощения можете привести? куда уж проще то? попробуйте коммандлайн отладку в каком-нибудь GDB, вот это я понимаю неудобно. а в студии - самая нормальная отладка из всех, что доводилось пробовать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 20:59     Принципы отладки в MVS 2012
Еще ссылки по теме:
Что такое MVS? C++
C++ Учебники/уроки по MVS
C++ Не компилирует в MVS 2008
C++ fill и fill_n из STL (MVS)
C++ Странное поведение оптимизации у MVS-C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
31.08.2013, 20:59     Принципы отладки в MVS 2012 #15
Цитата Сообщение от BESSON_off Посмотреть сообщение
Область видимости и все дела." - что за окно "Стек вызовов"? Где оно?
у тебя она не открыта( на скриншоте) полазь по меню "Вид","Отладка" найдешь много вкусностей
Yandex
Объявления
31.08.2013, 20:59     Принципы отладки в MVS 2012
Ответ Создать тему
Опции темы

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