// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Учебный курс по отладке проектов на языках C и C++
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Учебный курс по отладке проектов на языках C и C++ - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Учебный курс по отладке проектов на языках C и C++


Март 2013 г. [Номер версии: V8.0-1]

В этом кратком практическом руководстве рассматриваются некоторые аспекты отладки проектов C или C++ в IDE NetBeans.


== Требования

*Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.*

|===
|Программное обеспечение или материал |Требуемая версия 

|IDE NetBeans |link:https://netbeans.org/downloads/index.html[+версия 7.4 или 8.0 с подключаемым модулем NetBeans C/C+++] 

|Комплект для разработчика на языке Java (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+версия 7 или 8+] 
|===

Сведения о загрузке и установке необходимого программного обеспечения см. в разделах link:../../../community/releases/80/install.html[+Инструкции по установке IDE NetBeans+] и link:../../../community/releases/80/cpp-setup-instructions.html[+Настройка IDE NetBeans для C/C++/Fortran+].


== Создание примера проекта

В IDE NetBeans с C/C++ используется отладчик  ``gdb``  и обеспечиваются различные функции для отладки проектов пользователей. Для наглядного рассмотрения этих функций в этом практическом руководстве используется проект  ``Quote`` . Если проект еще не создан, выполните следующие действия:

1. Выберите команду "Файл" > "Новый проект".
2. В мастер проекта разверните категорию "Образцы" и подкатегорию "C/C++".
3. Выберите подкатегорию "Приложения", затем выберите проект  ``Quote`` . Нажмите кнопку "Далее", а затем нажмите кнопку "Готово".


== Создание точек останова

Можно создавать точки останова и управлять ими в коде в любое время без запуска сеанса отладки.


=== Создание и удаление точек останова на строке

1. В проекте  ``Quote_1``  откройте файл  ``quote.cc`` .
2. Установите точку останова на строке, щелкнув левое поле окна редактора исходного кода рядом со строкой 171 ( ``response = readChar("Enter disk module type: (S for single disks, R for RAID; Q - exit)", 'S');`` ). Строка будет выделена красным цветом, что обозначает установку точки останова.
image::images/line_breakpoint1.png[]

[start=3]
. Чтобы удалить точку останова, щелкните значок в левом поле.

[start=4]
. Выберите "Окно" > "Отладка" > "Точки останова", чтобы открыть окно точек останова. Линейная точка останова находится в списке под узлом C/C++.
image::images/line_breakpoint2.png[]

[start=5]
. Разверните узел C/C++, чтобы стала видна точка останова.
image::images/line_breakpoint2_expand.png[]


=== Создание точки останова на функции

1. Нажмите кнопку 'Создать новую точку останова' в левой части окна 'Точки останова' или выберите Отладка > Создать точку останова (Ctrl+Shift+F8)", чтобы открыть диалоговое окно 'Создание точки останова'.
2. В списке 'Тип отладчика' выберите 'Встроенный'.
3. В списке 'Тип точки останова' выберите 'Функция'.
4. Введите имя функции  ``Customer::GetDiscount``  в текстовом поле "Имя функции". Нажмите кнопку "ОК". 
image::images/function_breakpoint1.png[]

[start=5]
. Точка останова на функции установлена и добавлена в список в окне "Точки останова".
image::images/function_breakpoint2.png[]

[start=6]
. Нажмите кнопку 'Выбрать группы точек останова' в левой части окна, чтобы объединить точки останова в различные группы и выбрать тип.
image::images/group_breakpoint_type.png[]

[start=7]
. Разверните группы 'Файл:Строка' и 'Функция', чтобы стали видны точки останова. 
image::images/breakpoint_types.png[]


== Запуск сеанса отладки

При запуске сеанса отладки в среде IDE запускается отладчик  ``gdb`` , а затем выполняется приложение внутри отладчика. IDE автоматически открывает окна и панель инструментов отладчика и выводит результаты отладки в окне 'Результаты'.

1. Начните сеанс отладки для проекта  ``Quote_1`` . Для этого нажмите кнопку 'Отладить проект' image::images/debugbutton.png[] или выберите Отладка > Отладить проект. 
Запускается отладчик и приложение выполняется. Отображается панель инструментов отладчика. 
image::images/debugger_toolbar.png[]

[start=2]
. Откройте окно "Сеансы": для этого выберите "Окно" > "Отладка" > "Сеансы". 
Сеанс отладки показан в этом окне.


== Проверка состояния приложения

1. Приложение  ``Quote_1``  отображает запрос на ввод данных в окне 'Результаты (Отладка)'.
2. Введите имя клиента после запроса "Enter customer name:" (Введите имя клиента).

Приложение останавливается на ранее заданной точке останова функции Customer::GetDiscount, и в редакторе открывается файл customer.cc с фокусом в строке, где вызывается данная функция. В окне 'Точки останова' отобразятся две точки останова, установленные ранее. Зеленая стрелка счетчика программы отображается поверх значка точки останова функции. 
image::images/function_breakpoint3.png[]


[start=3]
. Нажмите на вкладку, чтобы открыть окно 'Стек вызовов' или выберите Окно > Отладка > Стек вызовов. В стеке вызовов отображаются три окна.
image::images/call_stack.png[]

[start=4]
. Откройте окно "Переменные", в которой отображается одна переменная.

[start=5]
. Щелкните значок 'Развернуть', чтобы развернуть структуру. 
image::images/local_variables1.png[]

[start=6]
. Нажмите кнопку "Продолжить" на панели инструментов. 
Будет выполнена функция  ``GetDiscount`` , и результаты скидки для клиента появятся в окне 'Результаты (Отладка)'. После этого отобразится запрос на ввод данных.

[start=7]
. Введите данные после отображения запроса.

Программа остановится в следующей точке останова – в заданной ранее точке останова на строке. В файле  ``quote.cc``  вверху значка точки останова отобразится зеленая стрелка счетчика команд, обозначающая строку, на которой остановлена программа. 

image::images/line_breakpoint3.png[]


[start=8]
. Перейдите на вкладку "Переменные", в которой отобразится длинный список переменных. 
image::images/local_variables2.png[]

[start=9]
. Перейдите на вкладку "Стек вызовов", в которой теперь отобразится одно окно в стеке.

[start=10]
. Выберите "Окно" > "Отладка" > "Регистры". 
Откроется окно "Регистры", отображающее текущее содержимое регистров. 
image::images/registers.png[] 

[start=11]
. Выберите "Окно" > "Отладка" > "Дисассемблер". 
Откроется окно "Дисассемблер", отображающее команды ассемблера для текущего файла исходного кода. 
image::images/disassembly.png[] 

[start=12]
. Нажмите кнопку 'Продолжить'; на панели инструментов и продолжите вводить данные в ответ на запросы в окно вывода, пока программа не будет завершена.

[start=13]
. Когда вы нажимаете Enter, чтобы выйти из программы, сеанс отладки завершается. Чтобы завершить сеанс отладки до завершения выполнения программы, можно нажать кнопку 'Завершить сеанс отладчика' на панели инструментов или выбрать Отладка > Завершить сеанс отладчика.


== См. также

Дополнительные статьи о разработке с помощью C/C++/Fortran в IDE NetBeans см. в разделе link:https://netbeans.org/kb/trails/cnd.html[+Учебные карты C/C+++].

link:mailto:users@cnd.netbeans.org?subject=Feedback:%20Debugging%20C/C++%20Projects%20-%20NetBeans%20IDE%207.4%20Tutorial[+Отправить отзыв по этому учебному курсу+]
