1 <chapter id="debugger">
3 >Интерфейс отладчика</title>
4 <indexterm zone="debugger"
10 >Для C и C++ &kdevelop; содержит встроенный отладчик, интегрированный с редактором. Технически это реализовано как внешний интерфейс для отладчика &GNU; <application
12 > через каналы (pipe). Отладчик можно запустить несколькими способами: </para>
17 >Через пункт меню <menuchoice
23 >, после чего в отладчик загрузится главная программа вашего проекта. </para>
28 >Через пункт меню <menuchoice
32 >Запуск другого</guimenuitem
34 >Загрузить файл core</guimenuitem
36 > загрузится core-файл, генерируемый ядром системы после сбоя программы (это может быть выключено в вашей системе, см. <application
37 >ulimit(1)</application
38 >). Эта отладка полезна для анализа сбоев программы. </para>
43 >Через пункт меню <menuchoice
47 >Запуск другого</guimenuitem
49 >Присоединить к процессу</guimenuitem
51 > отладчик подстроится к уже запущенной программе. Вам нужно будет выбрать её из списка запущенных процессов. </para>
56 >Помните, что отладка возможна только если программа была скомпилирована с информацией для отладки. Это можно установить в диалоге <guibutton
57 >Параметры компилятора</guibutton
58 >. Информация для отладки помогает найти соответствие между именами файлов, строчками и адресами в программе. </para>
63 >Отладчик предлагает несколько видов информации о процессе: </para>
66 >При попытке запуска отладки проекта без отладочной информации вы получите сообщение <computeroutput
67 >Нет исходного кода...</computeroutput
68 > в строке состояния. При установке точки останова, она будет показана в панели точек останова как <computeroutput
69 >В ожидании (добавление)</computeroutput
77 <indexterm zone="debugger"
79 >наблюдать переменные</primary
82 >Окно содержит список значений всех локальных переменных на текущей точке выполнения. </para>
85 >Можно наблюдать как локальные, так и глобальные переменные. Добавить переменную можно либо нажатием кнопки <guibutton
87 >, либо нажатием клавиши <keycap
89 > на выбранном пункте <guilabel
91 >. Удалить их можно через контекстное меню. </para>
97 >Фреймовый стек</term>
99 <indexterm zone="debugger"
101 >фреймовый стек</primary
104 >(... в процессе написания ...) </para>
110 >Точки останова</term>
112 <indexterm zone="debugger"
114 >точки останова</primary
117 >Данная панель позволяет просматривать и управлять точками останова. Для непосредственной отладки используется <application
119 >, так что для полного понимания всех возможностей отладки &kdevelop; необходимо базовое представление о принципе работы <ulink url="http://www.gnu.org/software/gdb"
124 >Исходный код, содержащий определение точек останова, находится в файле <filename
125 >kdevelop/languages/cpp/debugger/breakpoint.h</filename
129 >На левом краю панели имеются кнопки со следующими функциями:</para>
134 >Добавление пустой точки останова</para
138 >Изменение выбранной точки останова</para
142 >Удаление выбранной точки останова</para
146 >Удаление всех точек останова</para
151 >Основная часть панели - таблица с 7 столбцами. Каждой строке таблицы соответствует одна точка останова. Столбцы:</para>
156 >Переключатель для выбора точек</para
160 >Тип: Ошибка, Файл:строка, Точка наблюдения, Адрес или Метод</para
172 >Запрещена: если точка останова запрещена, при отладке она пропускается.</para
176 >В ожидании (добавление): показывается при отсутствии отладочной информации. Из info-страницы GDB: <blockquote
178 >Если указанное расположение точки останова найти не удалось, это может быть из-за того, что библиотека, в которой оно находится, ещё не загружена. В этом случае можно создать особую точку останова (<quote
179 >pending breakpoint</quote
180 >), действие которой откладывается до хагрухки необходимой библиотеки.</para
188 >В ожидании (очистка)</para
192 >В ожидании (изменение)</para
196 >Расположение в формате файл:строка</para
204 >Счётчик игнорирования: если число <varname
206 > больше нуля, то в первые <varname
208 > раз при достижении точки останова выполнение программы остановленр не будет.</para
212 >Попадания: количество достижений точки останова.</para
222 >Дизассемблирование</term>
224 <indexterm zone="debugger"
226 >дизассемблирование</primary
229 >(... в процессе написания ...)</para>
236 <sect1 id="settingbreakpoints">
238 >Установка точек останова</title>
241 >(... в процессе написания ...) </para>
244 > <!-- settingbreakpoints -->
246 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
248 <sect1 id ="debuggeroptions">
255 >Отобразить обработанные имена</term>
257 <indexterm zone="debugger"
259 >обработка имён</primary
261 <indexterm zone="debugger"
269 >В программе, написанной на C++, имена функций изменяются (<quote
271 >), то есть к начальному имени функции добавляется информация о типах аргументов, которые она принимает. Это необходимо для перегрузки (overload) функций. Алгоритм такой обработки не стандартизован и имеет различные реализации даже в разных версиях компилятора &GNU; C++. </para>
274 >В окне дизассемблирования отображаются не изменённые имена, однако это можно изменить. </para>
280 >Попробуйте установку точек останова по загрузке библиотеки</term>
282 <indexterm zone="debugger"
284 >"ленивые" точки останова</primary
286 <indexterm zone="debugger"
288 >точки останова</primary
294 >Отладчик <application
296 > не разрешает устанавливать точки останова в коде, не загруженном в данный момент. В приложении с модульной структурой, где код загружается только по требованию (через функцию libc <function
298 >). Возможность установки точек останова в библиотеках предоставляет &kdevelop;. Таким образом, точки останова ставятся в своеобразную очередь и передаются <application
300 > только после загрузки необходимой библиотеки. </para>
306 >Включить плавающую панель</term>
308 <indexterm zone="debugger"
310 >панель инструментов отладчика</primary
312 <indexterm zone="debugger"
314 >панель инструментов</primary
320 >(... в процессе написания ...) </para>
326 > <!-- debuggeroptions -->