Translation by Artem Sereda with my minor changes
[kde-ru.git] / docs / kdevelop / kdevelop / debugger.docbook
bloba2cf29f8a9c65f95faca15e8d7e914e5f52e9e72
1 <chapter id="debugger">
2 <title
3 >Интерфейс отладчика</title>
4 <indexterm zone="debugger"
5 ><primary
6 >отладчик</primary
7 ></indexterm>
9 <para
10 >Для C и C++ &kdevelop; содержит встроенный отладчик, интегрированный с редактором. Технически это реализовано как внешний интерфейс для отладчика &GNU; <application
11 >gdb</application
12 > через каналы (pipe). Отладчик можно запустить несколькими способами: </para>
14 <itemizedlist>
15 <listitem>
16 <para
17 >Через пункт меню <menuchoice
18 ><guimenu
19 >Отладка</guimenu
20 ><guimenuitem
21 >Запуск</guimenuitem
22 ></menuchoice
23 >, после чего в отладчик загрузится главная программа вашего проекта. </para>
24 </listitem>
26 <listitem>
27 <para
28 >Через пункт меню <menuchoice
29 ><guimenu
30 >Отладка</guimenu
31 > <guimenuitem
32 >Запуск другого</guimenuitem
33 > <guimenuitem
34 >Загрузить файл core</guimenuitem
35 ></menuchoice
36 > загрузится core-файл, генерируемый ядром системы после сбоя программы (это может быть выключено в вашей системе, см. <application
37 >ulimit(1)</application
38 >). Эта отладка полезна для анализа сбоев программы. </para>
39 </listitem>
41 <listitem>
42 <para
43 >Через пункт меню <menuchoice
44 ><guimenu
45 >Отладка</guimenu
46 > <guimenuitem
47 >Запуск другого</guimenuitem
48 > <guimenuitem
49 >Присоединить к процессу</guimenuitem
50 ></menuchoice
51 > отладчик подстроится к уже запущенной программе. Вам нужно будет выбрать её из списка запущенных процессов. </para>
52 </listitem>
54 <listitem>
55 <para
56 >Помните, что отладка возможна только если программа была скомпилирована с информацией для отладки. Это можно установить в диалоге <guibutton
57 >Параметры компилятора</guibutton
58 >. Информация для отладки помогает найти соответствие между именами файлов, строчками и адресами в программе. </para>
59 </listitem>
60 </itemizedlist>
62 <para
63 >Отладчик предлагает несколько видов информации о процессе: </para>
65 <para
66 >При попытке запуска отладки проекта без отладочной информации вы получите сообщение <computeroutput
67 >Нет исходного кода...</computeroutput
68 > в строке состояния. При установке точки останова, она будет показана в панели точек останова как <computeroutput
69 >В ожидании (добавление)</computeroutput
70 > (см. ниже). </para>
72 <variablelist>
73 <varlistentry>
74 <term
75 >Переменные</term>
76 <listitem>
77 <indexterm zone="debugger"
78 ><primary
79 >наблюдать переменные</primary
80 ></indexterm>
81 <para
82 >Окно содержит список значений всех локальных переменных на текущей точке выполнения. </para>
84 <para
85 >Можно наблюдать как локальные, так и глобальные переменные. Добавить переменную можно либо нажатием кнопки <guibutton
86 >Добавить</guibutton
87 >, либо нажатием клавиши <keycap
88 >Enter</keycap
89 > на выбранном пункте <guilabel
90 >Наблюдение</guilabel
91 >. Удалить их можно через контекстное меню. </para>
92 </listitem>
93 </varlistentry>
95 <varlistentry>
96 <term
97 >Фреймовый стек</term>
98 <listitem>
99 <indexterm zone="debugger"
100 ><primary
101 >фреймовый стек</primary
102 ></indexterm>
103 <para
104 >(... в процессе написания ...) </para>
105 </listitem>
106 </varlistentry>
108 <varlistentry>
109 <term
110 >Точки останова</term>
111 <listitem>
112 <indexterm zone="debugger"
113 ><primary
114 >точки останова</primary
115 ></indexterm>
116 <para
117 >Данная панель позволяет просматривать и управлять точками останова. Для непосредственной отладки используется <application
118 >GDB</application
119 >, так что для полного понимания всех возможностей отладки &kdevelop; необходимо базовое представление о принципе работы <ulink url="http://www.gnu.org/software/gdb"
120 >GDB</ulink
121 >. </para>
123 <para
124 >Исходный код, содержащий определение точек останова, находится в файле <filename
125 >kdevelop/languages/cpp/debugger/breakpoint.h</filename
126 >. </para>
128 <para
129 >На левом краю панели имеются кнопки со следующими функциями:</para>
131 <itemizedlist>
132 <listitem
133 ><para
134 >Добавление пустой точки останова</para
135 ></listitem>
136 <listitem
137 ><para
138 >Изменение выбранной точки останова</para
139 ></listitem>
140  <listitem
141 ><para
142 >Удаление выбранной точки останова</para
143 ></listitem>
144 <listitem
145 ><para
146 >Удаление всех точек останова</para
147 ></listitem>
148 </itemizedlist>
150 <para
151 >Основная часть панели - таблица с 7 столбцами. Каждой строке таблицы соответствует одна точка останова. Столбцы:</para>
153 <orderedlist>
154 <listitem
155 ><para
156 >Переключатель для выбора точек</para
157 ></listitem>
158 <listitem
159 ><para
160 >Тип: Ошибка, Файл:строка, Точка наблюдения, Адрес или Метод</para
161 ></listitem>
162 <listitem
163 ><para
164 >Статус:</para>
165 <itemizedlist>
166   <listitem
167 ><para
168 >Разрешена</para
169 ></listitem>
170   <listitem
171 ><para
172 >Запрещена: если точка останова запрещена, при отладке она пропускается.</para
173 ></listitem>
174   <listitem
175 ><para
176 >В ожидании (добавление): показывается при отсутствии отладочной информации. Из info-страницы GDB: <blockquote
177 ><para
178 >Если указанное расположение точки останова найти не удалось, это может быть из-за того, что библиотека, в которой оно находится, ещё не загружена. В этом случае можно создать особую точку останова (<quote
179 >pending breakpoint</quote
180 >), действие которой откладывается до хагрухки необходимой библиотеки.</para
181 > </blockquote
182 > </para
183 ></listitem>
184 </itemizedlist>
185 </listitem>
186 <listitem
187 ><para
188 >В ожидании (очистка)</para
189 ></listitem>
190 <listitem
191 ><para
192 >В ожидании (изменение)</para
193 ></listitem>
194 <listitem
195 ><para
196 >Расположение в формате файл:строка</para
197 ></listitem>
198 <listitem
199 ><para
200 >Условие</para
201 ></listitem>
202 <listitem
203 ><para
204 >Счётчик игнорирования: если число <varname
205 >N</varname
206 > больше нуля, то в первые <varname
207 >N</varname
208 > раз при достижении точки останова выполнение программы остановленр не будет.</para
209 ></listitem>
210 <listitem
211 ><para
212 >Попадания: количество достижений точки останова.</para
213 ></listitem>
214 </orderedlist>
217 </listitem>
218 </varlistentry>
220 <varlistentry>
221 <term
222 >Дизассемблирование</term>
223 <listitem>
224 <indexterm zone="debugger"
225 ><primary
226 >дизассемблирование</primary
227 ></indexterm>
228 <para
229 >(... в процессе написания ...)</para>
231 </listitem>
232 </varlistentry>
233 </variablelist>
236 <sect1 id="settingbreakpoints">
237 <title
238 >Установка точек останова</title>
240 <para
241 >(... в процессе написания ...) </para>
243 </sect1
244 > <!-- settingbreakpoints -->
246 <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
248 <sect1 id ="debuggeroptions">
249 <title
250 >Параметры</title>
252 <variablelist>
253 <varlistentry>
254 <term
255 >Отобразить обработанные имена</term>
256 <listitem>
257 <indexterm zone="debugger"
258 ><primary
259 >обработка имён</primary
260 ></indexterm>
261 <indexterm zone="debugger"
262 ><primary
263 >mangle</primary
264 ><secondary
265 >имя</secondary
266 ></indexterm>
268 <para
269 >В программе, написанной на C++, имена функций изменяются (<quote
270 >mangled</quote
271 >), то есть к начальному имени функции добавляется информация о типах аргументов, которые она принимает. Это необходимо для перегрузки (overload) функций. Алгоритм такой обработки не стандартизован и имеет различные реализации даже в разных версиях компилятора &GNU; C++. </para>
273 <para
274 >В окне дизассемблирования отображаются не изменённые имена, однако это можно изменить. </para>
275 </listitem>
276 </varlistentry>
278 <varlistentry>
279 <term
280 >Попробуйте установку точек останова по загрузке библиотеки</term>
281 <listitem>
282 <indexterm zone="debugger"
283 ><primary
284 >"ленивые" точки останова</primary
285 ></indexterm>
286 <indexterm zone="debugger"
287 ><primary
288 >точки останова</primary
289 ><secondary
290 >lazy</secondary
291 ></indexterm>
293 <para
294 >Отладчик <application
295 >gdb</application
296 > не разрешает устанавливать точки останова в коде, не загруженном в данный момент. В приложении с модульной структурой, где код загружается только по требованию (через функцию libc <function
297 >dlopen(3)</function
298 >). Возможность установки точек останова в библиотеках предоставляет &kdevelop;. Таким образом, точки останова ставятся в своеобразную очередь и передаются <application
299 >gdb</application
300 > только после загрузки необходимой библиотеки. </para>
301 </listitem>
302 </varlistentry>
304 <varlistentry>
305 <term
306 >Включить плавающую панель</term>
307 <listitem>
308 <indexterm zone="debugger"
309 ><primary
310 >панель инструментов отладчика</primary
311 ></indexterm>
312 <indexterm zone="debugger"
313 ><primary
314 >панель инструментов</primary
315 ><secondary
316 >отладчик</secondary
317 ></indexterm>
319 <para
320 >(... в процессе написания ...) </para>
321 </listitem>
322 </varlistentry>
323 </variablelist>
325 </sect1
326 > <!-- debuggeroptions -->
328 </chapter
329 > <!-- debugger -->