Как запустить код в visual studio 2010

Обновлено: 02.07.2024

Сегодняшняя публикация рассматривает некоторые полезные советы по отладке которые вы можете применять в Visual Studio. Мой друг Скот Кэйт (Scott Cate) (который опубликовал в блоге дюжину великолепных советов и трюков по VS) недавно обратил мое внимание на несколько хороших советов о которых не знает много разработчиков использующих Visual Studio (даже при том, что многие из них работают с ней уже давно с более ранних версий).

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

Run to Cursor (Ctrl + F10) (Выполнить до курсора)

Часто я наблюдаю людей отлаживающих приложения следующим образом: они устанавливают точку останова на много раньше того места которое их интересует, а затем постоянно пользуются F10/F11 чтобы пройти по коду пока не будет достигнуто то место, которое на самом деле они хотят исследовать. В некоторых случаях они внимательно осматривают каждое выражение, через которое они проходят (в таких случаях использование F10/F11 имеет смысл). Однако, чаще, люди просто пытаются быстро перейти к строке кода которая на самом деле их интересует — в таких случаях использование F10/F11 это не лучший способ для достижения такой цели.
Вместо этого, вы можете воспользоватся функцией “run to cursor” («выполнить до курсора») которая поддерживается отладчиком. Просто установите курсор на строке кода до которой вы хотите выполнить приложение, а затем нажмите вместе Ctrl + F10. Это приведет к выполнению приложения до этой строки и переходу в режим отладки сохраняя время которое могло быть потрачено на множественные нажатия F10/F11 для того, чтобы попасть сюда. Это работает даже в тех случаях, когда код в который вы хотите попасть находится в отдельном методе или класс по отношению к тому месту которое вы в данный момент отлаживаете.

Conditional Breakpoints (Условные точки останова)

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

Способность Visual Studio задания условных точек останова предоставляет намного, намного более легкий способ для того, чтобы этого добиться. Условные точки останова позволяют вам переходить в режим отладки только, если какое-то определенное условие которое было назначено достигнуто. Условные точки останова помогают вам избежать ручного изучения кода с его дальнейшим выполнением, а также могут сделать весь процесс отладки не требующим вашего ручного вмешательства и избавят вас от скучной работы.

Как включить Conditional Breakpoint (Условную точку останова)

Настройка условных точек останова в реальности проста. Нажмите в коде F9, чтобы установить точку на определенной строке (прим. пер. вы также можете установить точку останова кликнув мышью на левой границе окна редактора ровно на уровне строки, где нужно поставить точку останова):

image

Затем щелкните правой кнопкой мыши на красном кружке точки останова слева от окна редактора и выберите контекстное меню «Condition. » («Условие. »):

image

Это приведет к появлению диалогового окна, которое позволяет указать, что точка останова должна срабатывать только, если определенное условие истинно. Например, мы можем указать, что на нужно переходить в отладку, если размер локального списка paginatedDinners менее 10-и, вписав следующее выражение ниже:

image

Теперь, когда я перезапущу приложение и выполню поиск, отладчика будет включена только если я выполню поиск которые вернет меньше чем 10 обедов. Если будет больше 10-и обедов, тогда точка останова не будет достигнута.

Функция Hit Count (Число попаданий)

Иногда вам нужно, чтобы происходила остановка отладчика только при условии, что условие истинно N-раз.
Например, останавливаться только, если уже 5 раз поиск возвратил меньше чем 10 обедов.

Вы можете включить такое поведение правым щелчком на точке останова и выбором пункта меню «Hit count. » («Количество попаданий. »).

image

Это приведет к появлению диалогового окна, которое позволяет указать, что точка останова должна быть достигнута только N-раз, когда достигнуто условие или каждые N-раз, когда оно достигнуто, или каждый раз после N вхождений:

image

Фильтрация по Machine/Thread/Process (Имя машины/Поток/Процесс)
Вы можете также щелкнуть правой кнопкой на точке останова и выбрать пункт «Filter. » («Фильтр. ») из контекстного меню, чтобы указать, что точка останова должна быть достигнута, если процесс отладки происходит на определенной машине или в определенном процессе или в определенной потоке.

Точки трассировки (TracePoints) – пользовательские события при попадании в точку останова

Функция отладчика о которой многие люди не знают это возможность использовать TracePoints (Точки трассировки). Точка трассировки это точка останова при достижении которой срабатывает пользовательское событие. Эта функциональность особенно полезна, когда вам нужно отследить поведение в вашем приложении без остановки в отладке.

Я использую простое консольное приложение (Console application), чтобы продемонстрировать как мы могли бы воспользоваться Точками трассировки. Ниже приведена рекурсивная реализация ряда Фибоначчи:

image

В приложении приведенном выше мы используем Console.WriteLine() чтобы выводить окончательные значение ряда для конкретного значения диапазона. Что если мы захотели отследить рекурсивную последовательность ряда Фибоначчи в действии одновременно с отладкой – без фактической его остановки или приостановки? Точки трассировки могут помочь нам легко это сделать.

Установка точки трассировки (TracePoint)

Вы можете включить точки трассировки воспользовавшись клавишей F9 для установки точки останова в строке кода и затем щелкнув правой кнопкой на точке останова и выбрав пункт «When Hit. » («Когда Попадает. ») из контекстного меню:

image

Это приведет к появлению диалогового окна, которое позволяет вам указать, что должно произойти когда достигнута точка останова:

image

image

Точки трассировки (TracePoints) – выполнение пользовательского макроса

В разговоре который у меня состоялся на прошлой неделе в Лондоне, кто-то из аудитории спросил, возможно ли автоматически выводить локальные переменные, когда достигнута Точка останова (TracePoint).

Эта возможность не встроена в Visual Studio, но может быть включена при помощи пользовательского макроса и последующей настройки Точки трассировки для вызова макроса, когда эта точка достигнута. Чтобы это выполнить откройте интегрированную среду для макросов внутри Visual Studio (Tools->Macros->Macros IDE menu command). Далее под узлом MyMacros в обозревателе проекта выберите модуль или создайте новый (например: с именем “UsefulThings”). После этого вставьте следующий код макроса на VB в модуль и сохраните его:

Dim outputWindow As EnvDTE.OutputWindow

outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput). Object

Dim currentStackFrame As EnvDTE.StackFrame

outputWindow.ActivePane.OutputString( "*Dumping Local Variables*" + vbCrLf)

For Each exp As EnvDTE.Expression In currentStackFrame.Locals

* This source code was highlighted with Source Code Highlighter .

* This source code was highlighted with Source Code Highlighter .

Код макроса приведенный выше циклически проходит по текущему стеку и выводит все переменные в окно вывода.

Использование нашего пользовательского макроса DumpLocals

Затем мы можем использовать наш пользовательский макрос «DumpLocals» простое дополнительное приложение, которое приведено ниже:

image

Мы воспользуемся клавишей F9 для установки точки останова на возвращающее выражение в нашем методе
«Add» приведенном выше. Затем щелкнем правой кнопкой на точке останова и выберем из контекстного меню команду «When hit» («Когда останавливаться»):

image

image

Мы оставим флажок «continue execution» («продолжить выполнение»), так чтобы программа продолжала выполняться даже после достижения Точки трассировки.

А теперь, когда мы нажмем клавишу F5 и запустим приложение мы увидим следующий вывод в окне «output» («вывод») Visual Studio, когда будет запущен наш метод Add. Заметьте как макрос автоматически выводит в списке имя и значение каждой переменной, когда достигается Точка трассировки:

image

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

В прошлый раз я написал в блоге о других улучшениях в отладчике VS 2010 (включающих вывод подсказки по типу данных (DataTip), Импорт/Экспорт точек останова, Сохранение последних значений переменных и многое другое). Я буду дальше писать в блоге о новых возможностях VS 2010: Intellitrace, а также поддержке Отладки файла дампа. Публикации буду описывать кучу дополнительных крутейших новых возможностей которые могут сделать отладку приложений еще легче.

Также не забудьте посмотреть превосходную серию Скота Кэйта Visual Studio 2010 Tips and Tricks, чтобы узнать как лучше использовать Visual Studio. У него есть бесподобный набор бесплатных видео и публикаций в блоге.

Этапы написания программы

Здорова господа! Я давно уже хотел написать статью о том как пользоваться отладкой в visual studio 2010, я сам правда не сильно знаю, от поэтому и пишу статью, что б разобраться и потом если что подсмотреть как ей пользоваться.

Содержание:

Базовые операции отладки

В каждой точке программы, где отладчик останавливается, можно посмотреть (и даже изменить) значения переменных, прежде чем продолжить выполнение. Можно изменить исходный код, перекомпилировать, а затем перезапустить программу сначала. Можно даже изменить исходный код посреди пошагового выполнения программы. При переходе к следующему оператору после модификации кода отладчик автоматически перекомпилирует программу перед выполнением следующего оператора.

QIP Shot - Screen 126

Мы можем выполнить этот пример по одному оператору за раз и наблюдать за содержимым интересующих переменных.

Прежде всего следует убедиться, что конфигурация сборки примера установлена в Win32 Debug, а не Win32 Release.

QIP Shot - Screen 127

Можно также использовать меню Построение -> диспетчер конфигурации и в открывшемся окне посмотреть

Конфигурация проекта Debug включает дополнительную информацию в вашу исполняемую программу во время компиляции, что позволяет потом использовать возможности отладки.

Установка точек останова

QIP Shot - Screen 131

Чтобы установить точку останова в начале строки исходного кода, щелкните на серой колонке слева от номера строки с оператором, перед которым хотите остановить выполнение. В ней появится красный кружок, называемый глифом (glyph), указывающий на точку останова в строке. Удалить эту точку можно с помощью двойного щелчка.

Расширенные точки останова

Более совершенный способ установки точек останова предлагается в окне, которое открывается с помощью комбинации клавиш <Alt+F9> или выбора пункта Breakpoints(Точки останова) из списка, отображаемого при выборе кнопки Windows(Окна) панели инструментов Debug, которая находится в ее правой части

QIP Shot - Screen 132

появится окно

Окно точек останова

в этом окне вы можете также настраивать точки останова, просто посмотрите что там есть, попробуйте понажимать по кнопкам.

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

Установка точек трассировки

Function: $FUNCTION, Thread: $TID $TNAME

QIP Shot - Screen 136

Запуск отладки

меню отладка

Существует пять способов запуска приложения в режиме отладки через меню Debug (Отладка), которое показано ниже

  1. Пункт Start Debugging (Начать отладку), доступный и как кнопка панели инструментов Debug, просто запускает программу до первой точки останова (если она есть), где выполнение будет приостановлено. После того как вы просмотрите все необходимое в этой точке, выбор того же пункта меню или той же кнопки панели инструментов продолжит выполнение вплоть до следующей точки останова. Подобным образом можно передвигаться по программе от одной точки останова к другой и при каждой остановке выполнения просматривать критичные переменные, а по мере необходимости и изменять их значения. Если точек останова нет, запуск отладчика таким способом приведет к выполнению всей программы без остановок. Конечно факт запуска отладки подобным образом не означает, что вы обязаны продолжать ее в такой же манере при каждой остановке выполнения можно выбрать любой из доступных вариантов перемещения по коду.
  2. Пунк Attach to Process (Присоединиться к процессу) меню Debug позволяет отлаживать программу, которая уже запущена. Это средство отображает список процессов, работающих на машине, в котором можно выбрать процесс, требующий отладки. Это инструмент для опытных пользователей, и лучше избегать экспериментов с ним, если только вы не уверены в том, что собираетесь делать. Можно очень легко заблокировать машину или вызвать другие проблемы, если вмешаться в критические процессы операционной системы.
  3. Пункт меню Step Into (Войти), также доступный как кнопка панели инструментов Debug, выполняет программу по одному оператору за раз, входя в каждый блок кода, включая каждую вызываемую функцию. Это может оказаться весьма утомительным, если использовать такой режим отладки на протяжении всего процесса, поскольку при этом, например, будет выполняться весь код библиотечных функций, что вряд ли вас заинтересует, если только вы не заняты их разработкой. Небольшое количество библиотечных функций написано на языке ассемблер, включая некоторые из тех, которые поддерживают потоковый ввод вывод. Функции на языке ассемблер выполняются по одной машинной инструкции за раз, что как и можно ожидать, занимает значительное время.
  4. Пункт Step Over (Перешагнуть), также доступный в виде кнопки панели инструментов Debug, выполняет операторы программы по одному за раз и выполняет весь код функций, которые могут быть вызваны в операторе, без остановок.

[note]Какой бы способ из пяти вы б не выбрали для запуска процесса отладки, продолжайте выполнение, применив одну из пяти возможностей в любой из промежуточных точек останова.[/note]

Дальше просто ставите точки останова в коде, запускаете отладку любым из пяти способов, и затем смотрите необходимые значения переменных в меню Отладка=>Окна

QIP Shot - Screen 138

Как видно из рисунка выше можно посмотреть локальные и видимые переменные, а также их изменить. Что бы посмотреть локальные переменные выберите пункт Локальные.

QIP Shot - Screen 139

Вы их можете менять наведя на значение переменной и нажав два раза клавишей мышки

Так же можно посмотреть значение переменной наведя курсор мышки на эту переменную

QIP Shot - Screen 140

Так же можно посмотреть стек вызовов в окне Стек вызовов

QIP Shot - Screen 141

Во вкладке Отладка=>Окна=>Контрольные значения можно задавать переменные которые нужно отслеживать

QIP Shot - Screen 142

QIP Shot - Screen 143

появится окно в котором нужно ввести имя переменной или нескольких переменных. Добавление отладочного кода

При разработке крупных программ вы определенно нуждаетесь в добавлении специального кода, предназначенного для выявления ошибок, где только возможно, и предоставлении трассирующего вывода, который поможет найти местонахождение ошибок. Наверняка вы не захотите заниматься пошаговым выполнением кода до тех пор, пока не имеете представления о том, что собой представляет ошибка и в какой части кода ее следует искать. Код который выполняет упомянутые действия, необходим только на этапе проверки программы. Необходимость в нем отпадает, когда вы уверены, что программа полностью работоспособна и нет смысла нести дополнительные расходы, связанные с его выполнением, и терпеть неудобства, наблюдая отладочный вывод в завершенном продукте. По этой причине код, который вы добавляете только для отладки, работает в отладочной версии программы, но не в рабочей версии (если конечно, она правильно реализована).

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

Первый способ, с помощью которого можно проверить поведение программы, обеспечивается библиотечной функцией С++

Использование Утверждений

Файл заголовка стандартной библиотеки cassert объявляет функцию assert(), которую можно использовать для проверки логических условий в программе, когда не определен специальный символ препроцессора NDEBUG. Эта функция объявлена следующим образом

Добрый день друзья. Время стремительно мчится вперед, и мне как автору обучающего курса, следует идти в ногу со временем. Как показал опрос, проведенные в нашей группе во вконтакте, многие пользователи пользуются Visual Studio 2010. Думаю, со временем их количество будет только увеличиваться.
Поэтому я решил, что будет правильно показать, как создавать пустой проект в этой среде программирования. В принципе, все очень похоже.

Создание пустого проекта в Microsoft Visual Studio 2010.

Запускаем среду программирования. Перед нами открывается начальная страница.


Начальная страница Visual Studio 2010
Теперь нам нужно создать пустой проект. Для этого переходим на вкладку Файл и выбираем пункт Создать-> Проект. Либо, можно использовать "горячие клавиши" Ctrl+Shift+N.

Создаем проект.
В появившемся окошке выбираем Visual C++, а справа выбираем значок "Пустой проект" (в английской версии это Empty project ). Ниже необходимо придумать название проекту. На следующей картинке проект называется "hello world!" Тут же можно выбрать в какую папку сохранить ваш проект.


Окно основных свойств создаваемого проекта.
Теперь необходимо добавить в наш проект файл с кодом программы.
Есть несколько способов.
1. Представлен на картинке ниже. (используем обозреватель решений)


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

Содержание

  • Условие задачи
  • Выполнение
    • 1. Запустить MS Visual Studio 2010
    • 2. Создать проект на C++ по шаблону Dialog Based Application
    • 3. Изменение внешнего вида главной формы
    • 4. Этапы построения диалогового окна
    • 5. Формирование класса и ресурсов диалогового окна
    • 6. Окно MS Visual Studio и панель Solution Explorer
    • 7. Вызов диалогового окна класса CForm2 как ресурса
    • 8. Программирование события клика на кнопке «Form2» главного окна приложения

    Поиск на других ресурсах:

    Условие задачи

    1. Разработать диалоговое окно, которое содержит две кнопки OK и Cancel (рис. 1).

    Visual C++. Шаблон MFC Application. Форма, которую нужно создать

    Рис. 1. Форма, которую нужно создать

    Выполнение

    1. Запустить MS Visual Studio 2010
    2. Создать проект на C++ по шаблону Dialog Based Application

    Подробный пример создания проекта по шаблону Dialog Based Application описывается здесь .

    В окне создания нового проекта задать имя приложения как MFCApp . В будущем будем привязываться к этому имени.

    Папка приложения в нашем случае (не важно):

    Во время создания нового проекта в мастере выбираем Dialog Based Application . Все другие настройки оставляем по умолчанию.

    В результате будут сгенерированы два класса с именами CMFCAppApp и CMFCAppDlg .

    Окно MS Visual Studio после выполненных действий будет иметь вид как показано на рисунке 2.

    C++. Шаблон MFC Application. Форма приложения после создания Dialog Based Application

    Рис. 2. Форма приложения после создания Dialog Based Application

    3. Изменение внешнего вида главной формы

    Осуществим удаление кнопки OK . А кнопку Cancel переименуем в Exit .

    Для удаления кнопки OK нужно сначала ее выделить, а потом нажать клавишу Delete .

    Таким самым образом удаляем элемент в котором написано:

    C++. Шаблон MFC Application. Переименование имени кнопки с "Cancel" на "Exit"

    Пока что, в окне панели Properties имеем два элемента:

    Можно загрузить приложение на выполнение и протестовать его работу.

    Выносим на форму другую кнопку, не привязанную к обработчикам событий. В окне панели Properties появляется еще один элемент IDC_BUTTON1 .

    Форма приложения будет иметь вид, как показано на рисунке 4.

    Visual C++. Шаблон MFC Application. Вынесение кнопки не привязанной к обработчику событий

    Рис. 4. Вынесение кнопки не привязанной к обработчику событий

    Свойство Caption кнопки IDC_BUTTON1 изменяем на Form2 . После нажатия на этой кнопке будет вызываться диалоговое окно.

    4. Этапы построения диалогового окна

    В Visual C++ любое диалоговое окно строится в три этапа:

    • формирование ресурсов диалогового окна;
    • создание класса диалогового окна;
    • использование класса диалогового окна.
    5. Формирование класса и ресурсов диалогового окна

    В MS Visual Studio ресурсы диалогового окна автоматически создаются после создания класса окна. Таким образом, создав класс окна, мы автоматически создаем ресурс окна.

    Visual C++. Шаблон MFC Application. Вызов "Class Wizard. " для создания класса и ресурса диалогового окна

    В результате откроется окно, которое изображено на рисунке 6.

    Visual C++. Шаблон MFC Application. Окно "MFC Class Wizard"

    Окно имеет такие поля:

    • CMFCAppApp – класс приложения в целом;
    • CMFCAppDlg – класс диалогового окна приложения;
    • CAboutDlg – класс диалогового окна About , что было сформировано при создании проекта мастером AppWizard .

    Visual C++. Шаблон MFC Application. Команда добавления нового класса

    Рис. 7. Команда добавления нового класса

    Название ресурса устанавливается как IDD_FORM2 .

    Visual C++. MFC Applicaiton. Создание нового класса CForm2 и ресурса IDD_FORM2, которые базируются на классе CDialog

    Рис. 8. Создание нового класса CForm2 и ресурса IDD_FORM2 , которые базируются на классе CDialog

    6. Окно MS Visual Studio и панель Solution Explorer

    После выполненных действий, окно панели Solution Explorer имеет вид, как показано на рисунке 9.

    Visual C++. Шаблон MFC Application. Окно Solution Explorer

    Рис. 9. Окно Solution Explorer

    7. Вызов диалогового окна класса CForm2 как ресурса

    Visual C++. Шаблон MFC Application. Вызов списка имен ресурсов приложения

    Рис. 10. Вызов списка имен ресурсов приложения

    Получаем список имен имеющихся ресурсов:

    • IDD_ABOUTBOX – ресурс диалогового окна About ;
    • IDD_FORM2 – ресурс новосозданного окна;
    • IDD_MFC_APP_DIALOG – ресурс главного окна приложения.

    Для вызова нужного ресурса, необходимо на нем сделать двойной клик мышкой. Делаем двойной клик на ресурсе IDD_FORM2 . В результате, откроется новосозданное диалоговое окно (рис. 11). Как видно из рисунка 11, оно похоже на начальное окно приложения типа Dialog Based Application .

    Visual C++. Шаблон MFC Applicaiton. Окно класса CForm2, который унаследован от класса CDialog

    Рис. 11. Окно класса CForm2 , который унаследован от класса CDialog

    Visual C++. Шаблон MFC Application. Главное окно приложения

    Рис. 12. Главное окно приложения

    Visual C++. Шаблон MFC Application. Список событий из вкладыша Control Events элемента управления IDC_BUTTON1

    Рис. 13. Список событий из вкладыша Control Events элемента управления IDC_BUTTON1

    Visual C++. Шаблон MFC Application. Выбор события BN_CLICKED и вызов обработчика события OnBnClickedButton1

    Рис. 14. Выбор события BN_CLICKED и вызов обработчика события OnBnClickedButton1

    Между скобками нужно вставить свой собственный код обработки события.

    Программный код функции обработки события клика на кнопке IDC_BUTTON1 следующий:

    Теперь можно запустить приложение на выполнение и протестировать его работу.

    Читайте также: