[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]  


2. Вход и выход из DDD

В этой главе обсуждается, как запустить DDD и как выйти из него. В двух словах:

2.1 Вызов DDD

Обычно вы можете запустить DDD, вызвав программу ddd.

Вы также можете запустить DDD с различными аргументами и ключами, чтобы с самого начала конкретнее определить среду отладки.

Чаще всего DDD запускают с одним аргументом, указывающим исполняемую программу:

ddd программа

Если вы используете в качестве подчиненного отладчика GDB, DBX, Ladebug или XDB, вы также можете указать при запуске исполняемую программу и файл с дампом памяти:

ddd программа дамп

Если вы собираетесь отлаживать работающий процесс, вы можете вместо этого задать в качестве второго аргумента ID этого процесса, например,

ddd программа 1234

присоединит DDD к процессу 1234 (если нет файла с именем `1234'; DDD сначала ищет файл с дампом памяти).

Вы можете управлять и другими аспектами DDD, вызывая его с определенными ключами. Чтобы получить список ключей DDD, вызовите его как

ddd --help

Наиболее важны ключи для указания подчиненного отладчика (см. раздел 2.1.1 Выбор подчиненного отладчика), но вы можете также настроить при запуске несколько аспектов DDD (см. раздел 2.1.2 Ключи DDD).

Кроме того, DDD понимает обычные ключи X, такие как -display или -geometry. См. раздел 2.1.3 Ключи X Windows, для получения подробностей.

Все аргументы и ключи, не распознанные DDD, передаются подчиненному отладчику; раздел 2.1.4 Ключи подчиненного отладчика. Чтобы передать подчиненному отладчику ключ, который конфликтует с ключом X или перечисленным здесь ключом DDD, используйте ключ --debugger (см. раздел 2.1.2 Ключи DDD).

2.1.1 Выбор подчиненного отладчика

Чаще всего требуются ключи для выбора конкретного подчиненного отладчика. Обычно выбор подчиненного отладчика определяется тем, какую программу нужно анализировать:

Если вы вызываете DDD без этих ключей, но указываете анализируемую программу, то DDD выберет подчиненный отладчик автоматически:

См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для получения подробностей об определении подчиненного отладчика.

2.1.2 Ключи DDD

Вы можете детальнее управлять запуском DDD, используя перечисленные ниже ключи. Все ключи можно сокращать, если это не приводит к неоднозначности; вместо двойного дефиса -- можно использовать одинарный -. Практически каждый ключ контролирует особый ресурс или класс ресурсов DDD (см. раздел 3.6 Настройка DDD).

--attach-windows
Присоединить окно исходного текста и окно данных к консоли отладчика, тогда у DDD будет одно большое окно. Эта установка принимается по умолчанию. Указание этого ключа эквивалентно установке класса ресурсов DDD `Separate' в значение `off'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--attach-source-window
Присоединить к консоли отладчика только окно исходного текста. Указание этого ключа эквивалентно установке ресурса DDD `separateSourceWindow' в значение `off'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--attach-data-window
Присоединить к консоли отладчика только окно данных. Указание этого ключа эквивалентно установке ресурса DDD `separateDataWindow' в значение `off'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--automatic-debugger
Автоматически определить подчиненный отладчик по заданным аргументам. Указание этого ключа эквивалентно установке ресурса DDD `autoDebugger' в значение `on'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком.
--button-tips
Включить всплывающие подсказки для кнопок. Указание этого ключа эквивалентно установке ресурса DDD `buttonTips' в значение `on'. См. раздел 3.6.2 Настройка справки DDD, для получения подробностей.
--configuration
Напечатать на стандартный вывод конфигурационные установки DDD и выйти. Указание этого ключа эквивалентно установке ресурса DDD `showConfiguration' в значение `on'. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--check-configuration
Проверить рабочую среду DDD (в частности, конфигурацию X), сообщить о возможных причинах неисправностей и выйти. Указание этого ключа эквивалентно установке ресурса DDD `checkConfiguration' в значение `on'. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--data-window
Открыть при запуске окно данных. Указание этого ключа эквивалентно установке ресурса DDD `openDataWindow' в значение `on'. См. раздел 3.6.4.4 Переключение окон, для получения подробностей.
--dbx
Запустить в качестве подчиненного отладчика DBX. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `dbx'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком.
--debugger имя
Вызвать подчиненный отладчик с указанным именем. Это полезно, если у вас есть несколько версий отладчика, или если подчиненный отладчик нельзя вызвать по его обычному имени (например, gdb, dbx, xdb, jdb, pydb или perl). Этот ключ также можно использовать для передачи подчиненному отладчику ключей, которые иначе конфликтовали бы с ключами DDD. К примеру, чтобы передать XDB ключ -d каталог, напишите так:
ddd --debugger "xdb -d каталог"
Если вы применяете ключ --debugger, убедитесь, что указан также и тип подчиненного отладчика. То есть используйте один из ключей --gdb, --dbx, --xdb, --jdb, --pydb или --perl (если только принимаемые по умолчанию установки не срабатывают). Указание этого ключа эквивалентно установке ресурса DDD `debuggerCommand' в значение имя. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для дополнительной информации.
--debugger-console
Открыть при запуске консоль отладчика. Указание этого ключа эквивалентно установке ресурса DDD `openDebuggerConsole' в значение `on'. См. раздел 3.6.4.4 Переключение окон, для получения подробностей.
--disassemble
Дизассемблировать исходный код. Смотрите также ключ --no-disassemble ниже. Указание этого ключа эквивалентно установке ресурса DDD `disassemble' в значение `on'. См. раздел 4.4 Настройка окна исходного кода, для получения подробностей.
--exec-window
Запускать отлаживаемую программу в специально созданном окне выполнения. Это бывает нужно для программ, предъявляющих какие-то особые требования к терминалу, которым не удовлетворяет окно отладчика, например, они хотят непосредственно обрабатывать ввод с клавиатуры или использовать управляющие последовательности терминала. См. раздел 6.2 Использование окна выполнения, для получения подробностей. Указание этого ключа эквивалентно установке ресурса DDD `separateExecWindow' в значение `on'. См. раздел 6.2.1 Настройка окна выполнения, для дополнительной информации.
--font имя-шрифта
-fn имя-шрифта
Использовать по умолчанию шрифт с указанными именем. Указание этого ключа эквивалентно установке ресурса DDD `defaultFont' в значение `имя-шрифта'. См. раздел 3.6.4.3 Настройка шрифтов, для дополнительной информации.
--fonts
Напечатать на стандартный вывод используемые DDD определения шрифтов. Указание этого ключа эквивалентно установке ресурса DDD `showFonts' в значение `on'. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--fontsize размер
Установить размер шрифта по умолчанию (в десятых пункта). Чтобы DDD использовал 12-пунктовые шрифты, напишите --fontsize 120. Указание этого ключа эквивалентно установке класса ресурсов DDD `FontSize' в значение `размер'. См. раздел 3.6.4.3 Настройка шрифтов, для дополнительной информации.
--fullname
-f
Включить TTY-интерфейс: принимать дополнительные команды отладчика со стандартного ввода и перенаправлять вывод отладчика на стандартный вывод. Текущая позиция печатается в формате GDB -fullname, который подходит для программ-интерфейсов отладчика. По умолчанию выключаются консоль отладчика и окно исходного кода. См. раздел 10.2 Ввод команд с терминала, обсуждение TTY-интерфейса. Указание этого ключа эквивалентно установке класса ресурсов DDD `TTYMode' в значение `on'. См. раздел 10.2 Ввод команд с терминала, для дополнительной информации.
--gdb
Запустить в качестве подчиненного отладчика GDB. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `gdb'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для получения подробностей.
--glyphs
Показывать выполняемое в текущий момент место и точки останова значками. Смотрите также ключ --no-glyphs ниже. Указание этого ключа эквивалентно установке ресурса DDD `displayGlyphs' в значение `on'. См. раздел 4.4 Настройка окна исходного кода, для получения подробностей.
--help
-h
-?
Выдать список часто используемых ключей. Показать также ключи подчиненного отладчика. Указание этого ключа эквивалентно установке ресурса DDD `showInvocation' в значение `on'. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--host имя-машины
--host имя-пользователя@имя-машины
Запустить подчиненный отладчик непосредственно на удаленной машине имя-машины. Если задано имя-пользователя, и не не задан ключ --login, использовать имя-пользователя как имя удаленного пользователя. См. раздел 2.4.2 Использование DDD с удаленным подчиненным отладчиком, для получения подробностей. Указание этого ключа эквивалентно установке ресурса DDD `debuggerHost' в значение имя-машины. См. раздел 2.4.2 Использование DDD с удаленным подчиненным отладчиком, для получения подробностей.
--jdb
Запустить в качестве подчиненного отладчика JDB. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `jdb'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для получения подробностей.
--ladebug
Запустить в качестве подчиненного отладчика Ladebug. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `ladebug'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для дополнительной информации.
--lesstif-hacks
Эквивалентно --lesstif-version 999. Использовать не рекомендуется. Указание этого ключа эквивалентно установке ресурса DDD `lessTifVersion' в значение 999. См. раздел 10.19 Использование DDD с LessTif, для получения подробностей.
--lesstif-version версия
Задействовать некоторые хитрости, чтобы DDD правильно работал с LessTif. См. раздел 10.19 Использование DDD с LessTif, обсуждение этой темы. Указание этого ключа эквивалентно установке ресурса DDD `lessTifVersion' в значение версия. См. раздел 10.19 Использование DDD с LessTif, для подробностей.
--license
Напечатать на стандартный вывод лицензию DDD и выйти. Указание этого ключа эквивалентно установке ресурса DDD `showLicense' в значение on. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--login имя-пользователя
-l имя-пользователя
Использовать имя-пользователя как имя удаленного пользователя. См. раздел 2.4.2 Использование DDD с удаленным подчиненным отладчиком, для получения подробностей. Указание этого ключа эквивалентно установке ресурса DDD `debuggerHostLogin' в значение имя-пользователя. См. раздел 2.4.2 Использование DDD с удаленным подчиненным отладчиком, для получения подробностей.
--maintenance
Включить меню верхнего уровня `Maintenance', включающее средства для отладки DDD. См. раздел 3.1.9 Меню Menu, для получения подробностей. Указание этого ключа эквивалентно установке ресурса DDD `maintenance' в значение on. См. раздел 3.1.9 Меню Menu, для получения дополнительной информации.
--manual
Напечатать на стандартный вывод руководство по DDD и выйти. Указание этого ключа эквивалентно установке ресурса DDD `showManual' в значение on. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--news
Напечатать на стандартный вывод новости о DDD и выйти. Указание этого ключа эквивалентно установке ресурса DDD `showNews' в значение on. См. раздел 10.12 Получение диагностики, для получения подробностей.
--no-button-tips
Выключить всплывающие подсказки для кнопок. Указание этого ключа эквивалентно установке ресурса DDD `buttonTips' в значение `off'. См. раздел 3.6.2 Настройка справки DDD, для получения подробностей.
--no-data-window
Не открывать окно данных при запуске. Указание этого ключа эквивалентно установке ресурса DDD `openDataWindow' в значение `off'. См. раздел 3.6.4.4 Переключение окон, для получения подробностей.
--no-debugger-console
Не открывать при запуске консоль отладчика. Указание этого ключа эквивалентно установке ресурса DDD `openDebuggerConsole' в значение `off'. См. раздел 3.6.4.4 Переключение окон, для получения подробностей.
--no-disassemble
Не дизассемблировать исходный код. Указание этого ключа эквивалентно установке ресурса DDD `disassemble' в значение `on'. См. раздел 4.4 Настройка окна исходного кода, для получения подробностей.
--no-exec-window
Запускать отлаживаемую программу не в специально созданном окне выполнения, а использовать для этого консоль отладчика. Это полезно для программ, которые мало общаются с терминалом, или для удаленной отладки. См. раздел 6.2 Использование окна выполнения, для получения дополнительной информации. Указание этого ключа эквивалентно установке ресурса DDD `separateExecWindow' в значение `off'. См. раздел 6.2.1 Настройка окна выполнения, для дополнительной информации.
--no-glyphs
Не использовать графические значки; показывать выполняемую в текущий момент позицию и точки останова с помощью текстовых знаков. Указание этого ключа эквивалентно установке ресурса DDD `displayGlyphs' в значение `off'. См. раздел 4.4 Настройка окна исходного кода, для получения подробностей.
--no-lesstif-hacks
Эквивалентно --lesstif-version 1000. Использовать не рекомендуется. Указание этого ключа эквивалентно установке ресурса DDD `lessTifVersion' в значение 1000. См. раздел 10.19 Использование DDD с LessTif, для подробностей.
--no-maintenance
Не включать меню верхнего уровня `Maintenance' для отладки DDD. Принимается по умолчанию. См. раздел 3.1.9 Меню Menu, для получения дополнительной информации. Указание этого ключа эквивалентно установке ресурса DDD `maintenance' в значение off. См. раздел 3.1.9 Меню Menu, для получения дополнительной информации.
--no-source-window
Не открывать при запуске окно исходного кода. Указание этого ключа эквивалентно установке ресурса DDD `openSourceWindow' в значение `off'. См. раздел 3.6.4.4 Переключение окон, для получения подробностей.
--no-value-tips
Выключить всплывающие подсказки для значений. Указание этого ключа эквивалентно установке ресурса DDD `valueTips' в значение `off'. См. раздел 7.1 Просмотр простых значений с помощью подсказок, для дополнительной информации.
--nw
Не использовать интерфейс X Windows. Запустить подчиненный отладчик на локальной машине.
--perl
Запустить Perl в качестве подчиненного отладчика. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `perl'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для получения подробностей.
--pydb
Запустить PYDB в качестве подчиненного отладчика. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `pydb'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для дополнительной информации.
--panned-graph-editor
Использовать для прокрутки окна данных панель прокрутки Athena. Большинство пользователей предпочитают ее полоскам прокрутки, поскольку она позволяют делать двумерную прокрутку. Однако, по умолчанию панель прокрутки выключена, потому что некоторые реализации Motif плохо работают с виджетами Athena. См. раздел 7.3.1.12 Настройка отображений, для деталей; смотрите также ключ --scrolled-graph-editor ниже. Указание этого ключа эквивалентно установке ресурса DDD `pannedGraphEditor' в значение `on'. См. раздел 7.3.1.12 Настройка отображений, для получения подробностей.
--play-log файл-протокола
Повторить предыдущий сеанс DDD.
ddd --play-log файл-протокола
вызывает DDD как подчиненный отладчик, имитируя подчиненный отладчик, указанный в файле-протокола (смотрите ниже). Это полезно для отладки DDD. Указание этого ключа эквивалентно установке ресурса DDD `playLog' в значение `on'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для дополнительной информации.
--PLAY файл-протокола
Имитировать подчиненный отладчик. файл-протокола -- это файл `$HOME/.ddd/log', созданный одним из предыдущих сеансов DDD (см. раздел 10.12.1 Запись протокола). При вводе команды искать ее в файле-протокола и повторить записанный ответ; если команда не найдена, не делать ничего. Это используется ключом --play.
--rhost имя-машины
--rhost имя-пользователя@имя-машины
Запустить подчиненный отладчик в интерактивном режиме на удаленной машине имя-машины. Если задано имя-пользователя, и не задан ключ --login, использовать его в качестве имени удаленного пользователя. См. раздел 2.4.2 Использование DDD с удаленным подчиненным отладчиком, для получения подробностей. Указание этого ключа эквивалентно установке ресурса DDD `debuggerRHost' в значение имя-машины. См. раздел 2.4.2 Использование DDD с удаленным подчиненным отладчиком, для получения подробностей.
--scrolled-graph-editor
Использовать в окне данных полоски прокрутки Motif. Это принимается по умолчанию в большинстве конфигураций DDD. См. раздел 7.3.1.12 Настройка отображений, для получения подробностей; смотрите также --panned-graph-editor ниже. Указание этого ключа эквивалентно установке ресурса DDD `pannedGraphEditor' в значение `off'. См. раздел 7.3.1.12 Настройка отображений, для получения подробностей.
--separate-windows
--separate
Разделить консоль и окна исходного кода и данных. Смотрите также ключи --attach выше. Указание этого ключа эквивалентно установке класса ресурсов DDD `Separate' в значение `off'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--session сеанс
Загрузить при запуске указанный сеанс. См. раздел 2.3.2 Продолжение сеансов, для получения подробностей. Указание этого ключа эквивалентно установке ресурса DDD `session' в значение сеанс. См. раздел 2.3.2 Продолжение сеансов, для получения подробностей.
--source-window
Открыть при запуске окно с исходным текстом. Указание этого ключа эквивалентно установке ресурса DDD `openSourceWindow' в значение `on'. См. раздел 3.6.4.4 Переключение окон, для получения подробностей.
--status-at-bottom
Поместить строку состояния внизу окна исходного текста. Указание этого ключа эквивалентно установке ресурса DDD `statusAtBottom' в значение `on'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--status-at-top
Поместить строку состояния вверху окна исходного текста. Указание этого ключа эквивалентно установке ресурса DDD `statusAtBottom' в значение `off'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--sync-debugger
Не обрабатывать события X Windows, когда отладчик занят. Это может слегка повысить производительность на однопроцессорных системах. Указание этого ключа эквивалентно установке ресурса DDD `synchronousDebugger' в значение `on'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для получения подробностей.
--toolbars-at-bottom
Помещать панели инструментов внизу соответствующего окна. Указание этого ключа эквивалентно установке ресурса DDD `toolbarsAtBottom' в значение `on'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--toolbars-at-top
Помещать панели инструментов вверху соответствующего окна. Указание этого ключа эквивалентно установке ресурса DDD `toolbarsAtBottom' в значение `off'. См. раздел 3.6.4.2 Размещение окон, для дополнительной информации.
--trace
Напечатать диалог между DDD и подчиненным отладчиком на стандартный поток ошибок. Это полезно для отладки DDD. Если ключ --trace не задан, эта информация записывается в файл `~/.ddd/log' (`~' обозначает ваш начальный каталог), чтобы вы могли проводить также и "посмертную" отладку. См. раздел 10.12.1 Запись протокола, подробности о записи протокола. Указание этого ключа эквивалентно установке ресурса DDD `trace' в значение on. См. раздел 10.12 Получение диагностики, для получения подробностей.
--tty
-t
Включить TTY-интерфейс, принимая дополнительные команды отладчика со стандартного ввода и перенаправляя вывод отладчика на стандартный вывод. Текущая позиция печатается в формате, понятном человеку. По умолчанию консоль отладчика выключается. Указание этого ключа эквивалентно установке ресурса DDD `ttyMode' в значение `on'. См. раздел 10.2 Ввод команд с терминала, для дополнительной информации.
--value-tips
Включить всплывающие подсказки для значений. Указание этого ключа эквивалентно установке ресурса DDD `valueTips' в значение `on'. См. раздел 7.1 Просмотр простых значений с помощью подсказок, для дополнительной информации.
--version
-v
Напечатать на стандартный вывод версию DDD и выйти. Указание этого ключа эквивалентно установке ресурса DDD `showVersion' в значение `on'. См. раздел 10.12 Получение диагностики, для дополнительной информации.
--vsl-library библиотека
Загрузить VSL-библиотеку библиотека, а не использовать встроенную в DDD. Это полезно для настройки геометрии и шрифтов в изображениях данных. Указание этого ключа эквивалентно установке ресурса DDD `vslLibrary' в значение библиотека. См. раздел 7.3.7.3 Настройка внешнего вида отображений, для дополнительной информации.
--vsl-path путь
Искать VSL-библиотеки по указанному пути (это разделенный двоеточиями список каталогов). Указание этого ключа эквивалентно установке ресурса DDD `vslPath' в значение путь. См. раздел 7.3.7.3 Настройка внешнего вида отображений, для дополнительной информации.
--vsl-help
Показать список остальных ключей, управляющих интерпретатором VSL. Эти ключи предназначены для отладки и могут меняться без предупреждений.
--xdb
Запустить XDB в качестве подчиненного отладчика. Указание этого ключа эквивалентно установке ресурса DDD `debugger' в значение `xdb'. См. раздел 2.5 Настройка диалога с подчиненным отладчиком, для получения подробностей.

2.1.3 Ключи X Windows

DDD также понимает перечисленные ниже ключи X Windows. Обратите внимание, у этих ключей только один дефис -.

-display дисплей
Использовать X-сервер дисплей. По умолчанию дисплей берется из переменной среды DISPLAY.
-geometry геометрия
Задает начальный размер и позицию консоли отладчика.
-iconic
Запустить DDD в свернутом виде.
-name имя
Дать DDD указанное имя.
-selectionTimeout время
Задает промежуток времени (в миллисекундах), в течение которого два общающихся приложения должны ответить друг другу на запрос о выделении.
-title имя
Дать окну DDD заголовок имя.
-xrm строка-ресурса
Задает имя ресурса и его значение, перекрывающее установку по умолчанию.

2.1.4 Ключи подчиненного отладчика

Все ключи, которые DDD не распознает, передаются подчиненному отладчику. Этот раздел перечисляет наиболее полезные ключи разных подчиненных отладчиков, поддерживаемых DDD.

2.1.4.1 Ключи GDB

Эти ключи GDB полезны при использовании DDD с GDB в качестве подчиненного отладчика. Всесто двойных дефисов -- можно также использовать одинарные -.

-b скорость
Устанавливает скорость порта в бодах, для удаленной отладки.
--cd каталог
Сменить текущий каталог на указанный.
--command файл
Выполнить команды GDB из указанного файла.
--core файл-дампа
Анализировать указанный файл-дампа.
--directory каталог
-d каталог
Добавить каталог к пути поиска исходных файлов.
--exec выполняемый-файл
Использовать указанный файл в качестве выполняемого.
--mapped
Использовать отображаемые в память файлы символов, если они поддерживаются системой.
--nx
-n
Не считывать файл `.gdbinit'.
--readnow
Полностью считать файлы символов при первом обращении.
--se файл
Использовать файл как файл символов и выполняемый файл.
--symbols файл-символов
Считать символы из указанного файла.

См. раздел `Вызов GDB' в Отладка с GDB, другие ключи, которые можно использовать с GDB.

2.1.4.2 Ключи DBX и Ladebug

Варианты DBX сильно различаются по ключам, поэтому мы не можем привести здесь список. Смотрите man-страницы dbx(1) и ladebug(1).

2.1.4.3 Ключи XDB

Данные ключи XDB полезны при использовании его в качестве подчиненного отладчика для DDD.

-d каталог
Задает каталог как дополнительный каталог для поиска исходных файлов.
-P id-процесса
Задает ID существующего процесса, который пользователь собирается отлаживать.
-l библиотека
Предварительно загрузить информацию о разделяемой библиотеке. -l ALL велит делать это всегда.
-S число
Установить размер кеша строк равным числу байт (по умолчанию это 1024, минимальное значение).
-s
Включить отладку разделяемых библиотек.

Другие ключи можно найти с man-странице xdb(1).

2.1.4.4 Ключи JDB

Следующие ключи JDB полезны при использовании его в качестве подчиненного отладчика для DDD.

-host имя-машины
Машина интерпретатора, к которой следует подключиться.
-password пароль
Пароль интерпретатора (из -debug).

Следующие ключи JDB передаются отлаживаемому процессу:

-verbose
-v
Включить режим подробной диагностики.
-debug
Включить удаленную отладку Java.
-noasyncgc
Запретить асинхронную сборку мусора.
-verbosegc
Печатать сообщение, когда происходит сборка мусора.
-noclassgc
Выключить сборку мусора для классов.
-checksource
-cs
Проверять при загрузке классов, не обновился ли исходный файл.
-ss число
Устанавливает максимальный размер реального стека для любой нити.
-oss число
Устанавливает максимальный размер стека Java для любой нити.
-ms число
Устанавливает начальный размер кучи Java.
-mx число
Устанавливает максимальный размер кучи Java.
-Dимя=значение
Устанавливает системное свойство имя в указанное значение.
-classpath путь
Список каталогов, в которых следует искать классы. путь -- это разделенный двоеточиями список каталогов.
-prof
-prof:файл
Выводить профилировочные данные в файл `./java.prof'. Если указан файл, выводить эти данные в `./файл'.
-verify
Проверять все классы перед чтением.
-verifyremote
Проверять классы, считываемые из сети (по умолчанию).
-noverify
Не проверять классы.
-dbgtrace
Печатать информацию для отладки JDB.

Другие ключи можно найти в документации на JDB.

2.1.4.5 Ключи PYDB

Для получения списка полезных ключей PYDB смотрите его документацию.

2.1.4.6 Ключи Perl

Самый важный ключ Perl для использования с DDD -- это -w; он включает печать нескольких важных предупреждений. Остальные ключи смотрите в man-странице perlrun(1).

2.1.5 Несколько экземпляров DDD

Если у вас запущено несколько экземпляров DDD, они разделяют общие настройки и файлы истории. Это означает, что примененные к одному экземпляру изменения могут быть потеряны, когда их перезапишет другой экземпляр. DDD может защитить вас от нежелательных потерь двумя способами. Первый -- это автоматическая перезагрузка измененных параметров, управляемая следующим ресурсом (см. раздел 3.6 Настройка DDD):

Ресурс: checkOptions (класс CheckOptions)
Каждые n секунд, где n -- это значение данного ресурса, DDD проверяет, не изменился ли файл параметров. По умолчанию это 30. Установка этого ресурса в значение 0 выключает проверку файла параметров.

Обычно автоматической перезагрузки параметров бывает достаточно. Если вам нужна более сильная защита, DDD также может выдавать предупреждение о запуске нескольких экземпляров. По умолчанию это предупреждение не выводится. Если вы хотите получать его, включите `Edit => Preferences => Warn if Multiple DDD Instances are Running'.

Эта установка привязана к такому ресурсу (см. раздел 3.6 Настройка DDD):

Ресурс: warnIfLocked (класс WarnIfLocked)
Нужно ли предупреждать, если запущено несколько экземпляров DDD (`on'), или не нужно (`off', по умолчанию).

2.1.6 Предупреждения X Windows

Если вас раздражают предупреждения X Windows, вы можете подавить их, установив `Edit => Preferences => General => Suppress X warnings'.

Данная установка привязана к следующему ресурсу (см. раздел 3.6 Настройка DDD):

Ресурс: suppressWarnings (класс SuppressWarnings)
Если это `on', предупреждения X не выводятся. Это бывает иногда полезно для выполняемых файлов, собранных на машине с другой конфигурацией X Windows или Motif. По умолчанию `off'.

2.2 Выход из DDD

Чтобы покинуть DDD, выберите `File => Exit'. Вы также можете набрать команду quit в подсказке отладчика или нажать Ctrl+Q. GDB и XDB также поддерживают команду q или знак конца файла (обычно Ctrl+D). При закрытии последнего окна DDD также завершится.

Прерывание (ESC или `Interrupt') не закрывает DDD, а завершает действие любой работающей в данный момент команды отладчика и возвращает на командный уровень. Можно всегда безопасно ввести знак прерывания, потому что отладчик не позволяет ему подействовать до тех пор, пока это не будет безопасно.

Если обычное прерывание не срабатывает, вы можете использовать аварийный останов (Ctrl+\ или `Abort'), что посылает подчиненному отладчику сигнал SIGABRT. Используйте это только в чрезвычайных ситуациях; после этого сигнала подчиненный отладчик может оказаться в несогласованном состоянии или даже завершиться.

В крайнем случае (например, если DDD зависает), вы можете также прервать сам DDD, используя сигнал прерывания SIGINT). Это можно сделать, набрав знак прерывания (обычно это Ctrl+C) в оболочке, откуда был запущен DDD, или с помощью команды UNIX kill. Этот сигнал прерывает любое действие DDD; подчиненный отладчик также прерывается. Поскольку прерывание может привести к внутренней несогласованности, прибегайте к нему только в исключительных ситуациях; как можно быстрее сохраните свою работу и перезапустите DDD.

2.3 Сеансы

Если вы хотите прервать текущий сеанс DDD, вы можете сохранить все состояние отладчика как сеанс на диске и продолжить работу позднее.

2.3.1 Сохранение сеансов

Чтобы сохранить сеанс, выберите `File => Save Session As'. У вас спросят символьное имя для этого сеанса.

Если ваша программа запущена (см. раздел 6. Запуск программы), или если вы открыли файл с дампом (см. раздел 4.2.2 Открывание дампов памяти), DDD также может включить в сеанс дамп памяти, с тем чтобы данные отлаживаемой программы восстанавливались после повторного открытия сеанса. Чтобы получить дамп памяти, DDD как правило должен уничтожить отлаживаемую программу. Это означает, что вы не сможете продолжить выполнение программы после сохранения сеанса. В зависимости от архитектуры могут быть доступны и другие пути получения дампа памяти.

Включение дампа необходимо для восстановления содержимого памяти и исполняемой в текущий момент позиции. Чтобы включить в сеанс дамп памяти, задействуйте `Include Core Dump'.

PICS/ddd-save-session

После щелчка на `Save' сеанс сохраняется в `~/.ddd/sessions/сеанс'.

Вот список вещей, состояние которых записывается в сеансе:

После сохранения текущего состояния сеанса он становится активным. Это означает, что состояние DDD будет сохраняться как сеанс по умолчанию:

Чтобы сделать текущий сеанс неактивным, откройте сеанс по умолчанию с именем `[None]'. См. раздел 2.3.2 Продолжение сеансов, подробности об открывании сеансов.

2.3.2 Продолжение сеансов

Чтобы продолжить сохраненный ранее сеанс, нажмите `File => Open Session' и выберите из списка имя нужного сеанса. После щелчка на `Open' будет восстановлено полное состояние DDD для указанного сеанса.

Сеанс с именем `[None]' -- это сеанс по умолчанию, который активен при запуске DDD. Чтобы сохранить параметры для сеанса по умолчанию, откройте его и запишите параметры. См. раздел 3.6.1.3 Сохранение параметров, для получения подробностей.

PICS/ddd-open-session

Если восстановленный сеанс включает дамп памяти, то отлаживаемая программа будет в том же состоянии, в каком она была во время сохранения сеанса; в частности, вы сможете исследовать данные программы. Однако, у вас не будет возможности продолжить выполнение программы, поскольку ее процесс и среда (открытые файлы, ресурсы, etc.) больше не существуют. Тем не менее, вы сможете перезапустить программу, снова используя восстановленные точки останова и отображения данных.

Открытие сеансов также восстанавливает определения команд, кнопок, операции быстрого создания отображений и размер табуляции в исходнике. Таким образом вы можете держать различные наборы определений для каждого сеанса.

Вы также можете указать, какой сеанс следует открыть, при запуске DDD. Чтобы вызвать DDD с сеансом сеанс, используйте

ddd --session сеанс

Есть также краткая форма записи, которая открывает сеанс и вызывает подчиненный отладчик для исполняемого файла с именем сеанс (в случае, если сеанс невозможно открыть):

ddd =сеанс

При перезапуске сеанса нет нужды давать другие ключи командной строки, поскольку они будут перекрыты ключами, сохраненными в сеансе.

Для записи и восстановления сеансов DDD вы также можете использовать менеджер сеансов для X Windows, такой как xsm.(7) Когда DDD завершается менеджером сеансов, он сохраняет свое состояние под именем, которое ему сообщает менеджер сеансов; восстановление X-сеанса заставляет DDD перезагрузить сохраненное состояние.

2.3.3 Удаление сеансов

Чтобы удалить сеансы, которые вам больше не нужны, выберите `File => Open Session' или `File => Save Session'. Выделите ненужные сеансы и щелкните на `Delete'.

Сеанс по умолчанию `[None]' нельзя удалить.

2.3.4 Настройка сеансов

Вы можете изменить место, где DDD записывает сеансы, устанавливая переменную среды DDD_SESSIONS равной имени каталога. По умолчанию принимается `~/.ddd/sessions/'.

Когда это применимо, DDD поддерживает команду gcore, которая служит для получения файла с дампом памяти работающей программы. Вы можете ввести путь этой команды через `Edit => Preferences => Helpers => Get Core File'. Оставьте значение пустым, если у вас нет gcore или подобной программы.

Данная установка привязана к следующему ресурсу (см. раздел 3.6 Настройка DDD):

Ресурс: getCoreCommand (класс GetCoreCommand)
Команда для получения дампа памяти работающего процесса (обычно это gcore) `@FILE@' заменяется на базовое имя создаваемого файла; `@PID@' заменяется на ID процесса. Вывод должен быть записан в `@FILE@.@PID@'.

Оставьте значение пустым, если у вас нет gcore или подобной программы.

2.4 Удаленная отладка

Вы можете запустить DDD, подчиненный отладчик и отлаживаемую программу на разных машинах.

2.4.1 Запуск DDD на удаленной машине

Вы можете запустить DDD на удаленной машине, используя текущую машину в качестве X-дисплея. Для вызова DDD на удаленной машине наберите

ddd -display дисплей

где дисплей -- это имя X-сервера, к которому следует подсоединиться (например, `имя-машины:0.0', где имя-машины -- это имя вашей машины).

Вместо указания ключа -display дисплей вы также можете установить переменную среды DISPLAY равной дисплею.

2.4.2 Использование DDD с удаленным подчиненным отладчиком

Чтобы запустить подчиненный отладчик на удаленной машине, вам требуется доступ к этой машине по `remsh' (в системах BSD это называется `rsh').

Для запуска отладчика на удаленной машине имя-машины, вызовите DDD как

ddd --host имя-машины удаленная-программа

Если удаленное имя пользователя отличается от локального, используйте

ddd --host имя-машины --login имя-пользователя
удаленная-программа

или

ddd --host имя-пользователя@имя-машины удаленная-программа

В удаленном режиме отладки есть несколько трудных мест:

См. раздел 2.4.2.1 Настройка удаленной отладки, о настройке удаленного режима.

2.4.2.1 Настройка удаленной отладки

Когда вы запускаете подчиненный отладчик на удаленной машине (см. раздел 2.4 Удаленная отладка), все команды для обращения к подчиненному отладчику и его файлам должны запускаться удаленно. Этим управляют следующие ресурсы (см. раздел 3.6 Настройка DDD):

Ресурс: rshCommand (класс RshCommand)
Команда удаленной оболочки для запуска терминальных команд на удаленной машине. Обычно это remsh, rsh, ssh или on.

Ресурс: listCoreCommand (класс listCoreCommand)
Команда для перечисления всех файлов с дампами на удаленной машине. Строка `@MASK@' заменяется на фильтр файлов. По умолчанию принимается такая установка:

Ddd*listCoreCommand: \
file @MASK@ | grep '.*:.*core.*' | cut -d: -f1

Ресурс: listDirCommand (класс listDirCommand)
Команда для перечисления всех каталогов на удаленной машине. Строка `@MASK@' заменяется на фильтр файлов. По умолчанию принимается такая установка:

Ddd*listDirCommand: \
file @MASK@ | grep '.*:.*directory.*' | cut -d: -f1

Ресурс: listExecCommand (класс listExecCommand)
Команда для перечисления всех исполняемых файлов на удаленной машине. Строка `@MASK@' заменяется на фильтр файлов. По умолчанию действует такая установка:

Ddd*listExecCommand: \
file @MASK@ | grep '.*:.*exec.*' \
  | grep -v  '.*:.*script.*' \
  | cut -d: -f1 | grep -v '.*\.o$'

Ресурс: listSourceCommand (класс listSourceCommand)
Команда для перечисления всех исходных файлов на удаленной машине. Строка `@MASK@' заменяется на фильтр файлов. По умолчанию действует такая установка:

Ddd*listSourceCommand: \
file @MASK@ | grep '.*:.*text.*' | cut -d: -f1

2.4.3 Отладка удаленной программы

Отладчик GDB позволяет вам запускать отлаживаемую программу на удаленной машине (называемой удаленной целью), тогда как GDB работает на локальной машине.

См. раздел `Remote Debugging' в Debugging with GDB, для получения подробностей. В двух словах, требуются следующие шаги:

Локальный файл `.gdbinit' полезен для подготовки путей поиска, etc.

Разумеется, вы можете также комбинировать удаленные режимы DDD и GDB, запуская DDD, GDB и отлаживаемую программу на разных машинах.

2.5 Настройка диалога с подчиненным отладчиком

Перечисленные ниже установки управляют диалогом DDD с его подчиненным отладчиком.

2.5.1 Вызов подчиненного отладчика

Чтобы выбрать используемый по умолчанию отладчик, выберите `Edit => Preferences => Startup => Debugger Type'. Вы можете сделать так, чтобы

Следующие ресурсы DDD управляют вызовом подчиненного отладчика (см. раздел 3.6 Настройка DDD).

Ресурс: autoDebugger (класс AutoDebugger)
Если `on' (по умолчанию), DDD будет пытаться определить тип отладчика по аргументам, возможно, перекрывая ресурс `debugger' (смотрите ниже). Если `off', DDD будет вызывать отладчик, указанный ресурсом `debugger', независимо от аргументов.

Ресурс: debugger (класс Debugger)
Тип подчиненного отладчика (`gdb', `dbx', `ladebug', `xdb', `jdb', `pydb' или `perl').

Данный ресурс обычно устанавливается через ключи --gdb, --dbx, --ladebug, --xdb, --jdb, --pydb и --perl; См. раздел 2.1.2 Ключи DDD, для получения подробной информации.

Ресурс: debuggerCommand (класс DebuggerCommand)
Имя, по которому следует вызывать подчиненный отладчик. Если эта строка пуста (по умолчанию), используется тип отладчика (ресурс `debugger').

Данный ресурс обычно устанавливается через ключ --debugger; См. раздел 2.1.2 Ключи DDD, для получения подробной информации.

2.5.2 Инициализация подчиненного отладчика

DDD использует несколько ресурсов для инициализации подчиненного отладчика (см. раздел 3.6 Настройка DDD).

2.5.2.1 Инициализация GDB

Ресурс: gdbInitCommands (класс InitCommands)
Данная строка содержит список разделенных переводами строки команд, которые первым делом посылаются GDB. Есть побочный эффект: все указанные в этом ресурсе установки считаются фиксированными и не могут быть изменены через панель установок GDB, если только перед ними не стоит пробел. По умолчанию ресурс `gdbInitCommands' содержит несколько абсолютно необходимых для DDD установок:
  Ddd*gdbInitCommands: \
  set height 0\n\
  set width 0\n\
   set verbose off\n\
  set prompt (gdb) \n

Тогда как установки `set height', `set width' и `set prompt' фиксированы, установку `set verbose' можно изменить из панели настройки GDB (хотя это сбрасываться при каждом запуске DDD).

Не используйте этот ресурс для настройки GDB; вместо этого, напишите персональный файл `~/.gdbinit'. Подробности смотрите в документации по GDB.

Ресурс: gdbSettings (класс Settings)
Эта строка содержит список разделенных переводами строки команд, которые также посылаются GDB. По умолчанию ее значение равно
  Ddd*gdbSettings: \
  set print asm-demangle on\n

Этот ресурс используется для записи и восстановления установок отладчика.

Ресурс: sourceInitCommands (класс SourceInitCommands)
Если `on' (по умолчанию), DDD записывает все команды инициализации GDB во временный файл и велит GDB считать его, а не посылает команды по одной. Это приводит к более быстрому запуску (особенно если вы определяете много пользовательских команд). Если `off', DDD посылает GDB команды по отдельности.

2.5.2.2 Инициализация DBX

Ресурс: dbxInitCommands (класс InitCommands)
Эта строка содержит список разделенных переводами строки команд, которые изначально посылаются DBX. По умолчанию она пуста.

Не используйте этот ресурс для настройки DBX; вместо этого, напишите персональный файл `~/.dbxinit' или `~/.dbxrc'. Подробности смотрите в документации по DBX.

Ресурс: dbxSettings (класс Settings)
Данная строка содержит список разделенных переводами строки команд, которые также изначально посылаются DBX. По умолчанию она пуста.

2.5.2.3 Инициализация XDB

Ресурс: xdbInitCommands (класс InitCommands)
Данная строка содержит список разделенных переводами строки команд, которые изначально посылаются XDB. По умолчанию она пуста.

Не используйте этот ресурс для настройки XDB; вместо этого, напишите персональный файл `~/.xdbrc'. Подробности смотрите в документации по XDB.

Ресурс: xdbSettings (класс Settings)
Эта строка содержит список разделенных переводами строки команд, которые также посылаются XDB. По умолчанию она пуста.

2.5.2.4 Инициализация JDB

Ресурс: jdbInitCommands (класс InitCommands)
Эта строка содержит список разделенных переводами строки команд, которые изначально посылаются JDB. Этот ресурс можно использовать для настройки JDB. По умолчанию он пуст.

Ресурс: jdbSettings (класс Settings)
Эта строка содержит список разделенных переводами строки команд, которые также изначально посылаются JDB. По умолчанию она пуста.

DDD использует этот ресурс для записи и восстановления установок JDB.

2.5.2.5 Инициализация PYDB

Ресурс: pydbInitCommands (класс InitCommands)
Данная строка содержит список разделенных переводами строки команд, которые изначально посылаются PYDB. По умолчанию она пуста.

Этот ресурс можно использовать для настройки PYDB.

Ресурс: pydbSettings (класс Settings)
Эта строка содержит список разделенных переводами строки команд, которые также изначально посылаются PYDB. По умолчанию она пуста.

DDD использует этот ресурс для записи и восстановления установок PYDB.

2.5.2.6 Инициализация Perl

Ресурс: perlInitCommands (класс InitCommands)
Эта строка содержит список разделенных переводами строки команд, которые изначально посылаются отладчику Perl. По умолчанию она пуста.

Этот ресурс можно использовать для настройки отладчика Perl.

Ресурс: perlSettings (класс Settings)
Данная строка содержит список разделенных переводами строки команд, которые также изначально посылаются отладчику Perl. По умолчанию она пуста.

DDD использует этот ресурс для записи и восстановления установок отладчика Perl.

2.5.2.7 Поиск начальной позиции

Ресурс: initSymbols (класс InitSymbols)
При загрузке исполняемого файла, DDD запрашивает у подчиненного отладчика начальную позицию в исходном тексте -- обычно это функция main. Если такая позиция не найдена, DDD пробует другие символы из этого разделенного переводами строки списка. Значение, которое принимается по умолчанию, велит DDD искать различные варианты главной функции (в особенности главные функции Фортрана):
main\n\
MAIN\n\
main_\n\
MAIN_\n\
main__\n\
MAIN__\n\
_main\n\
_MAIN\n\
__main\n\
__MAIN

2.5.2.8 Открывание выделения

Ресурс: openSelection (класс OpenSelection)
Если это `on', вызванный без аргументов DDD проверяет, не содержит ли текущее выделение или буфер обмена имя файла или URL выполняемой программы. Если это так, DDD автоматически откроет эту программу для отладки. Если данный ресурс равен `off' (по умолчанию), вызванный без аргументов DDD всегда будет запускаться без отлаживаемой программы.

2.5.3 Общение с подчиненным отладчиком

Следующие ресурсы управляют общением с подчиненным отладчиком.

Ресурс: blockTTYInput (класс BlockTTYInput)
Должен ли DDD блокироваться при чтении данных от подчиненного отладчика через псевдотерминальный интерфейс. Большинство систем UNIX, кроме GNU/Linux требуют этого; установите его в `on'. На GNU/Linux, устанавливайте его равным `off'. Значение `auto' (по умолчанию) всегда делает "лучший" выбор (то есть лучший выбор из известных разработчикам DDD).

Ресурс: displayTimeout (класс DisplayTimeout)
Время ожидания (в миллисекундах) пока подчиненный отладчик закончит вывод информации отображения. По умолчанию 2000.

Ресурс: positionTimeout (класс PositionTimeout)
Время ожидания (в миллисекундах) пока подчиненный отладчик закончит вывод информации о позиции. По умолчанию 500.

Ресурс: questionTimeout (класс QuestionTimeout)
Время (в секундах) ожидания ответа от подчиненного отладчика. По умолчанию 10.

Ресурс: synchronousDebugger (класс SynchronousDebugger)
Если `on', события X не обрабатываются, пока отладчик занят. Это может слегка улучшить производительность на однопроцессорных системах. См. раздел 2.1.2 Ключи DDD, о ключе --sync-debugger.

Ресурс: terminateOnEOF (класс TerminateOnEOF)
Если `on', DDD завершает подчиненный отладчик, когда DDD обнаруживает конец файла (то есть, когда подчиненный отладчик закрывает канал вывода). Так DDD действовал по умолчанию в версии 2.x и более ранних. Если это `off' (по умолчанию), DDD не делает ничего особенного.

Ресурс: useTTYCommand (класс UseTTYCommand)
Если `on', использовать команду GDB tty для перенаправления ввода/вывода в отдельное окно выполнения. Если `off', использовать явное перенаправление посредством операторов перенаправления оболочки `<' и `>'. По умолчанию `off' (явное перенаправление), так как на некоторых системах и в некоторых версиях GDB команда tty работает неправильно.


[Содержание]   [Назад]   [Пред]   [Вверх]   [След]   [Вперед]  
Используются технологии uCoz