diff options
Diffstat (limited to 'tde-i18n-ru/docs/tdevelop/tdevelop/debugger.docbook')
-rw-r--r-- | tde-i18n-ru/docs/tdevelop/tdevelop/debugger.docbook | 329 |
1 files changed, 329 insertions, 0 deletions
diff --git a/tde-i18n-ru/docs/tdevelop/tdevelop/debugger.docbook b/tde-i18n-ru/docs/tdevelop/tdevelop/debugger.docbook new file mode 100644 index 00000000000..cff2b7ab18e --- /dev/null +++ b/tde-i18n-ru/docs/tdevelop/tdevelop/debugger.docbook @@ -0,0 +1,329 @@ +<chapter id="debugger"> +<title +>Интерфейс отладчика</title> +<indexterm zone="debugger" +><primary +>отладчик</primary +></indexterm> + +<para +>Для C и C++ &tdevelop; содержит встроенный отладчик, интегрированный с редактором. Технически это реализовано как внешний интерфейс для отладчика &GNU; <application +>gdb</application +> через каналы (pipe). Отладчик можно запустить несколькими способами: </para> + +<itemizedlist> +<listitem> +<para +>Через пункт меню <menuchoice +><guimenu +>Отладка</guimenu +><guimenuitem +>Запуск</guimenuitem +></menuchoice +>, после чего в отладчик загрузится главная программа вашего проекта. </para> +</listitem> + +<listitem> +<para +>Через пункт меню <menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Запуск другого</guimenuitem +> <guimenuitem +>Загрузить файл core</guimenuitem +></menuchoice +> загрузится core-файл, генерируемый ядром системы после сбоя программы (это может быть выключено в вашей системе, см. <application +>ulimit(1)</application +>). Эта отладка полезна для анализа сбоев программы. </para> +</listitem> + +<listitem> +<para +>Через пункт меню <menuchoice +><guimenu +>Отладка</guimenu +> <guimenuitem +>Запуск другого</guimenuitem +> <guimenuitem +>Присоединить к процессу</guimenuitem +></menuchoice +> отладчик подстроится к уже запущенной программе. Вам нужно будет выбрать её из списка запущенных процессов. </para> +</listitem> + +<listitem> +<para +>Помните, что отладка возможна только если программа была скомпилирована с информацией для отладки. Это можно установить в диалоге <guibutton +>Параметры компилятора</guibutton +>. Информация для отладки помогает найти соответствие между именами файлов, строчками и адресами в программе. </para> +</listitem> +</itemizedlist> + +<para +>Отладчик предлагает несколько видов информации о процессе: </para> + +<para +>При попытке запуска отладки проекта без отладочной информации вы получите сообщение <computeroutput +>Нет исходного кода...</computeroutput +> в строке состояния. При установке точки останова, она будет показана в панели точек останова как <computeroutput +>В ожидании (добавление)</computeroutput +> (см. ниже). </para> + +<variablelist> +<varlistentry> +<term +>Переменные</term> +<listitem> +<indexterm zone="debugger" +><primary +>наблюдать переменные</primary +></indexterm> +<para +>Окно содержит список значений всех локальных переменных на текущей точке выполнения. </para> + +<para +>Можно наблюдать как локальные, так и глобальные переменные. Добавить переменную можно либо нажатием кнопки <guibutton +>Добавить</guibutton +>, либо нажатием клавиши <keycap +>Enter</keycap +> на выбранном пункте <guilabel +>Наблюдение</guilabel +>. Удалить их можно через контекстное меню. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Фреймовый стек</term> +<listitem> +<indexterm zone="debugger" +><primary +>фреймовый стек</primary +></indexterm> +<para +>(... в процессе написания ...) </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Точки останова</term> +<listitem> +<indexterm zone="debugger" +><primary +>точки останова</primary +></indexterm> +<para +>Данная панель позволяет просматривать и управлять точками останова. Для непосредственной отладки используется <application +>GDB</application +>, так что для полного понимания всех возможностей отладки &tdevelop; необходимо базовое представление о принципе работы <ulink url="http://www.gnu.org/software/gdb" +>GDB</ulink +>. </para> + +<para +>Исходный код, содержащий определение точек останова, находится в файле <filename +>tdevelop/languages/cpp/debugger/breakpoint.h</filename +>. </para> + +<para +>На левом краю панели имеются кнопки со следующими функциями:</para> + +<itemizedlist> +<listitem +><para +>Добавление пустой точки останова</para +></listitem> +<listitem +><para +>Изменение выбранной точки останова</para +></listitem> + <listitem +><para +>Удаление выбранной точки останова</para +></listitem> +<listitem +><para +>Удаление всех точек останова</para +></listitem> +</itemizedlist> + +<para +>Основная часть панели - таблица с 7 столбцами. Каждой строке таблицы соответствует одна точка останова. Столбцы:</para> + +<orderedlist> +<listitem +><para +>Переключатель для выбора точек</para +></listitem> +<listitem +><para +>Тип: Ошибка, Файл:строка, Точка наблюдения, Адрес или Метод</para +></listitem> +<listitem +><para +>Статус:</para> +<itemizedlist> + <listitem +><para +>Разрешена</para +></listitem> + <listitem +><para +>Запрещена: если точка останова запрещена, при отладке она пропускается.</para +></listitem> + <listitem +><para +>В ожидании (добавление): показывается при отсутствии отладочной информации. Из info-страницы GDB: <blockquote +><para +>Если указанное расположение точки останова найти не удалось, это может быть из-за того, что библиотека, в которой оно находится, ещё не загружена. В этом случае можно создать особую точку останова (<quote +>pending breakpoint</quote +>), действие которой откладывается до хагрухки необходимой библиотеки.</para +> </blockquote +> </para +></listitem> +</itemizedlist> +</listitem> +<listitem +><para +>В ожидании (очистка)</para +></listitem> +<listitem +><para +>В ожидании (изменение)</para +></listitem> +<listitem +><para +>Расположение в формате файл:строка</para +></listitem> +<listitem +><para +>Условие</para +></listitem> +<listitem +><para +>Счётчик игнорирования: если число <varname +>N</varname +> больше нуля, то в первые <varname +>N</varname +> раз при достижении точки останова выполнение программы остановленр не будет.</para +></listitem> +<listitem +><para +>Попадания: количество достижений точки останова.</para +></listitem> +</orderedlist> + + +</listitem> +</varlistentry> + +<varlistentry> +<term +>Дизассемблирование</term> +<listitem> +<indexterm zone="debugger" +><primary +>дизассемблирование</primary +></indexterm> +<para +>(... в процессе написания ...)</para> + +</listitem> +</varlistentry> +</variablelist> + + +<sect1 id="settingbreakpoints"> +<title +>Установка точек останова</title> + +<para +>(... в процессе написания ...) </para> + +</sect1 +> <!-- settingbreakpoints --> + +<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + +<sect1 id ="debuggeroptions"> +<title +>Параметры</title> + +<variablelist> +<varlistentry> +<term +>Отобразить обработанные имена</term> +<listitem> +<indexterm zone="debugger" +><primary +>обработка имён</primary +></indexterm> +<indexterm zone="debugger" +><primary +>mangle</primary +><secondary +>имя</secondary +></indexterm> + +<para +>В программе, написанной на C++, имена функций изменяются (<quote +>mangled</quote +>), то есть к начальному имени функции добавляется информация о типах аргументов, которые она принимает. Это необходимо для перегрузки (overload) функций. Алгоритм такой обработки не стандартизован и имеет различные реализации даже в разных версиях компилятора &GNU; C++. </para> + +<para +>В окне дизассемблирования отображаются не изменённые имена, однако это можно изменить. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Попробуйте установку точек останова по загрузке библиотеки</term> +<listitem> +<indexterm zone="debugger" +><primary +>"ленивые" точки останова</primary +></indexterm> +<indexterm zone="debugger" +><primary +>точки останова</primary +><secondary +>lazy</secondary +></indexterm> + +<para +>Отладчик <application +>gdb</application +> не разрешает устанавливать точки останова в коде, не загруженном в данный момент. В приложении с модульной структурой, где код загружается только по требованию (через функцию libc <function +>dlopen(3)</function +>). Возможность установки точек останова в библиотеках предоставляет &tdevelop;. Таким образом, точки останова ставятся в своеобразную очередь и передаются <application +>gdb</application +> только после загрузки необходимой библиотеки. </para> +</listitem> +</varlistentry> + +<varlistentry> +<term +>Включить плавающую панель</term> +<listitem> +<indexterm zone="debugger" +><primary +>панель инструментов отладчика</primary +></indexterm> +<indexterm zone="debugger" +><primary +>панель инструментов</primary +><secondary +>отладчик</secondary +></indexterm> + +<para +>(... в процессе написания ...) </para> +</listitem> +</varlistentry> +</variablelist> + +</sect1 +> <!-- debuggeroptions --> + +</chapter +> <!-- debugger --> |