blob: 4fc11452a8cb55870d15ce195567feb9bc9a45e7 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Учебный курс по отладке проектов на языках C и C++</TITLE>
<meta name="DESCRIPTION" content="Short tutorial that demonstrates debugging C/C++
projects in NetBeans IDE">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="author" content="Susan Morgan"><!--Optional tag-->
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">
</head>
<body>
<a name="top"></a>
<h1>Учебный курс по отладке проектов на языках C и C++</h1>
<!-- START INTRO -->
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p><em>Составитель <i>Энн Райс (Ann Rice)</i>, редактор <i>Сьюзан Морган (Susan Morgan)</i> <br> Июль 2012 г.</em> [номер версии: V7.8-1]</div>
<p>В следующем кратком учебном курсе рассматриваются некоторые аспекты отладки проектов на языках C или C++ в NetBeans IDE NetBeans 7.2.
</p>
<!-- END INTRO -->
<h3>Содержание</h3>
<img alt="Содержимое на этой странице применимо к IDE NetBeans 7.2" class="stamp" src="../../../images_www/articles/72/netbeans-stamp.gif" title="Содержимое этой страницы применимо к IDE NetBeans 7.2">
<table class="b-none vatop " cellpadding="0" cellspacing="0">
<tr>
<td class="hyphen"></td>
<td><a href="#requirements" title="Требования">Требования</a></td>
</tr>
<tr>
<td class="hyphen"></td>
<td><a href="#project" title="Создание примера проекта"></a>Создание примера проекта</td>
</tr>
<tr>
<td class="hyphen"></td>
<td><a href="#breakpoints" title="Создание точек останова"> Создание точек останова</a></td>
</tr>
<tr>
<td class="hyphen"></td>
<td><a href="#starting" title="Запуск сеанса отладки">Запуск сеанса отладки</a></td>
</tr>
<tr>
<td class="hyphen"></td>
<td><a href="#inspecting" title="Проверка состояния приложения">Проверка состояния приложения</a></td>
</tr>
</table>
<h2><a NAME="requirements"></a>Требования</h2>
<p><b>Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.</b> </p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Программное обеспечение или материал</th>
<th class="tblheader" scope="col">Требуемая версия</th>
</tr>
<tr>
<td class="tbltd1">IDE NetBeans</td>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">версия 7.2 с подключаемым модулем NetBeans C/C++</a></td>
</tr>
<tr>
<td class="tbltd1">Комплект для разработчика на языке Java (JDK)</td>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">версия 7</a></td>
</tr>
</table>
<p>Сведения о загрузке и установке необходимого ПО доступны в разделах <a href="../../../community/releases/72/install.html">Инструкции по установке среды IDE NetBeans 7.2</a> и <a HREF="../../../community/releases/72/cpp-setup-instructions.html"> Настройка среды IDE NetBeans для C, C++ или Fortran</a>.
</p>
<h2><a name="project"></a>Создание примера проекта</h2>
<p>В IDE NetBeans с C/C++ используется отладчик <tt>gdb</tt> и обеспечиваются различные функции для отладки проектов пользователей. Для наглядного рассмотрения этих функций в этом учебном курсе используется проект <tt>Quote</tt>. Если проект еще не создан, выполните следующие действия:
<ol>
<li>Выберите команду &quot;Файл&quot; &gt; &quot;Новый проект&quot;.</li>
<li>В мастер проекта разверните категорию &quot;Образцы&quot; и подкатегорию &quot;C/C++&quot;.</li>
<li>Выберите подкатегорию &quot;Приложения&quot;, затем выберите проект <tt>Quote</tt>. Нажмите кнопку &quot;Далее&quot;, а затем нажмите кнопку &quot;Готово&quot;.
</li>
</ol>
<h2><a name="breakpoints"></a>Создание точек останова</h2>
<p>
Можно создавать точки останова и управлять ими в коде в любое время без запуска сеанса отладки.
</p>
<div class="indent">
<h3><a name="LineBreakpoint"></a>Создание и удаление точек останова на строке</h3>
<ol>
<li>
В проекте <tt>Quote_1</tt> откройте файл <tt>quote.cc</tt>.
</li>
<li>Установите точку останова на строке, щелкнув левое поле окна редактора исходного кода рядом со строкой 161 (<tt>response = readChar(&quot;Enter disk module type: (S for single disks, R for RAID; Q - exit)&quot;, 'S');</tt>). Строка будет выделена красным цветом, что обозначает установку точки останова.<br> <img alt="Снимок окна 'Точка останова'" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint1.png">
</li>
<li>Чтобы удалить точку останова, щелкните значок в левом поле.
</li>
<li>Выберите &quot;Окно&quot; &gt; &quot;Отладка&quot; &gt; &quot;Точки останова&quot;, чтобы открыть окно точек останова. Точка останова на строке будет перечислена в окне.<br> <img alt="Снимок окна 'Точка останова'" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint2.png">
</li>
</ol>
<h3><a name="FunctionBreakpoint"></a>Создание точки останова на функции</h3>
<ol>
<li>Выберите &quot;Отладка&quot; &gt; &quot;Создать точку останова&quot; (CTRL+SHIFT+f8), чтобы открыть диалоговое окно &quot;Создать точку останова&quot;.
</li>
<li>
В раскрывающемся списке &quot;Тип точки останова&quot; установите тип &quot;Функция&quot;.
</li>
<li>Введите имя функции <tt>Customer::GetDiscount</tt> в текстовом поле &quot;Имя функции&quot;. Нажмите кнопку &quot;ОК&quot;. <br> <img alt="Моментальный снимок диалогового окна 'Создать точку останова'" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint1.png">
</li>
<li>Точка останова на функции установлена и добавлена в список в окне &quot;Точки останова&quot;.<br> <img alt="Снимок окна 'Точка останова'" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint2.png">
</li>
</ol>
</div>
<h2><a name="starting"></a>Запуск сеанса отладки</h2>
<p>При запуске сеанса отладки в среде IDE запускается отладчик <tt>gdb</tt>, а затем выполняется приложение внутри отладчика. Среда IDE автоматически открывает окна отладчика и выводит результаты отладки в окне вывода.</p><ol>
<li>Начните сеанс отладки для проекта <tt>Quote_1</tt>, щелкнув правой кнопкой мыши узел проекта и выбрав 'Отладка'. Запускается отладчик и приложение выполняется.
</li>
<li>Откройте окно &quot;Сеансы&quot;: для этого выберите &quot;Окно&quot; &gt; &quot;Отладка&quot; &gt; &quot;Сеансы&quot;. Сеанс отладки показан в этом окне.
</li>
</ol>
<h2><a name="inspecting"></a>Проверка состояния приложения</h2>
<ol>
<li>В приложении <tt>Quote_1</tt> отображается запрос на ввод данных в окне вывода.</li>
<li>Введите имя клиента после запроса &quot;Enter customer name:&quot; (Введите имя клиента).
</li>
<li>Приложение остановится в заданной ранее точке останова на функции. В окне 'Точки останова' отобразятся две точки останова, установленные ранее. Зеленая стрелка счетчика программы отображается поверх значка точки останова функции. <br> <img alt="Снимок вкладки 'Точка останова'" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint3.png">
</li>
<li>Откройте окно &quot;Стек вызовов&quot;: для этого выберите &quot;Окно&quot; &gt; &quot;Отладка&quot; &gt; &quot;Стек вызовов&quot;. В стеке вызовов отображаются три окна.<br> <img alt="Снимок вкладки 'Стек вызовов'" src="../../../images_www/articles/72/cnd/debugging/call_stack.png">
</li>
<li>Откройте окно &quot;Переменные&quot;, в которой отображается одна переменная. Нажмите верхнюю кнопку в левом столбце во вкладке &quot;Переменные&quot;, чтобы отобразить автоматически введенные значения вместо локальных переменных. </li>
<li>Щелкните значок 'Развернуть', чтобы развернуть структуру. <br> <img alt="Снимок вкладки 'Переменные'" src="../../../images_www/articles/72/cnd/debugging/local_variables1.png">
</li>
<li>Нажмите кнопку &quot;Продолжить&quot; на панели инструментов. Будет выполнена функция <tt>GetDiscount</tt>, и в окне &quot;Внешний ввод-вывод&quot; отобразится скидка клиента. После этого отобразится запрос на ввод данных.
</li>
<li>Введите данные после отображения запроса. Программа остановится в следующей точке останова &ndash; в заданной ранее точке останова на строке. В файле <tt>quote.cc</tt> вверху значка точки останова отобразится зеленая стрелка счетчика команд, обозначающая строку, на которой остановлена программа. <br><br> <img alt="Снимок окна вывода" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint3.png"> <br><br>
</li>
<li>
Перейдите на вкладку &quot;Переменные&quot;, в которой отобразится длинный список переменных. <br> <img alt="Снимок вкладки 'Локальные переменные'" src="../../../images_www/articles/72/cnd/debugging/local_variables2.png">
</li>
<li>Перейдите на вкладку &quot;Стек вызовов&quot;, в которой теперь отобразится одно окно в стеке.
</li>
<li>Выберите &quot;Окно&quot; &gt; &quot;Отладка&quot; &gt; &quot;Регистры&quot;. Откроется окно &quot;Регистры&quot;, отображающее текущее содержимое регистров. <br> <img alt="Снимок окна 'Регистрация'" src="../../../images_www/articles/72/cnd/debugging/registers.png"> <br>
</li>
<li>Выберите &quot;Окно&quot; &gt; &quot;Отладка&quot; &gt; &quot;Дисассемблер&quot;. Откроется окно &quot;Дисассемблер&quot;, отображающее команды ассемблера для текущего файла исходного кода. <br> <img alt="Снимок окна 'Дисассемблер'" src="../../../images_www/articles/72/cnd/debugging/disassembly.png"> <br>
</li>
<li>
Нажмите кнопку 'Продолжить'; на панели инструментов и продолжите вводить данные в ответ на запросы в окно вывода, пока программа не будет завершена. Когда вы нажимаете Enter, чтобы выйти из программы, сеанс отладки завершается. Чтобы завершить сеанс отладки до завершения выполнения программы, щелкните правой кнопкой мыши сеанс на вкладке 'Сеансы' и выберите 'Готово' или выберите 'Отладка' > 'Завершить сеанс отладчика'.
</li>
</ol>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Debugging%20C/C++%20Projects%20-%20NetBeans%20IDE%207.2%20Tutorial">Отправить отзыв по этому учебному курсу</a></div>
</body>
</html>