Обычно вы можете запустить 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).
Чаще всего требуются ключи для выбора конкретного подчиненного
отладчика.
Обычно выбор подчиненного отладчика определяется тем, какую программу
нужно анализировать:
Если для программы требуется конкретный интерпретатор, такой как Java,
Python или Perl, то вам нужно использовать JDB, PYDB или отладчик
Perl.
Используйте
ddd --jdb программа
ddd --pydb программа
ddd --perl программа
для запуска DDD с JDB, PYDB или Perl в качестве подчиненного
отладчика.
Если программа является исполняемым двоичным файлом, вам нужен GDB,
DBX, Ladebug или XDB. Вообще, из этих отладчиков наибольшую
функциональность предоставляет GDB.
Используйте
ddd --gdb программа
ddd --dbx программа
ddd --ladebug программа
ddd --xdb программа
для запуска DDD с GDB, DBX, Ladebug или XDB в качестве
подчиненного отладчика.
Если вы вызываете DDD без этих ключей, но указываете анализируемую
программу, то DDD выберет подчиненный отладчик автоматически:
Если программа -- это программа на языке Python или Perl, или
Java-класс, DDD вызовет соответствующий отладчик.
если программа -- это исполняемый двоичный файл, DDD вызовет
отладчик, применяемый по умолчанию для двоичных программ (обычно это
GDB).
Вы можете детальнее управлять запуском 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 Получение диагностики, для
дополнительной информации.
Включить меню верхнего уровня `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 Настройка диалога с подчиненным отладчиком, для получения подробностей.
Все ключи, которые DDD не распознает, передаются подчиненному
отладчику. Этот раздел перечисляет наиболее полезные ключи разных
подчиненных отладчиков, поддерживаемых DDD.
Самый важный ключ Perl для использования с DDD -- это -w;
он включает печать нескольких важных предупреждений. Остальные ключи
смотрите в man-странице perlrun(1).
Если у вас запущено несколько экземпляров 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', по умолчанию).
Если вас раздражают предупреждения X Windows, вы можете подавить их,
установив `Edit => Preferences => General =>
Suppress X warnings'.
Данная установка привязана к следующему ресурсу (см. раздел 3.6 Настройка DDD):
Ресурс:suppressWarnings(класс SuppressWarnings)
Если это `on', предупреждения X не выводятся. Это бывает иногда
полезно для выполняемых файлов, собранных на машине с другой
конфигурацией X Windows или Motif. По умолчанию `off'.
Чтобы покинуть 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.
Чтобы сохранить сеанс, выберите `File => Save Session As'.
У вас спросят символьное имя для этого сеанса.
Если ваша программа запущена (см. раздел 6. Запуск программы), или если вы открыли файл
с дампом (см. раздел 4.2.2 Открывание дампов памяти), DDD также может включить
в сеанс дамп памяти, с тем чтобы данные отлаживаемой программы
восстанавливались после повторного открытия сеанса. Чтобы получить дамп
памяти, DDD как правило должен уничтожить отлаживаемую
программу. Это означает, что вы не сможете продолжить выполнение
программы после сохранения сеанса. В зависимости от архитектуры могут
быть доступны и другие пути получения дампа памяти.
Включение дампа необходимо для восстановления содержимого памяти и
исполняемой в текущий момент позиции. Чтобы включить в сеанс дамп
памяти, задействуйте `Include Core Dump'.
После щелчка на `Save' сеанс сохраняется в
`~/.ddd/sessions/сеанс'.
Вот список вещей, состояние которых записывается в сеансе:
Состояние отлаживаемой программы, в виде файла с дампом
памяти.(5)
После сохранения текущего состояния сеанса он становится активным.
Это означает, что состояние DDD будет сохраняться как сеанс по
умолчанию:
Пользовательские параметры будут сохраняться в
`~/.ddd/sessions/сеанс/init', а не в
`~/.ddd/init'. См. раздел 3.6.1.3 Сохранение параметров, для получения
подробностей.
История команд DDD будет сохраняться в
`~/.ddd/sessions/сеанс/history', а не в
`~/.ddd/history'. См. раздел 10.1.2 История команд, для
дополнительной информации.
Чтобы сделать текущий сеанс неактивным, откройте сеанс по
умолчанию с именем `[None]'. См. раздел 2.3.2 Продолжение сеансов,
подробности об открывании сеансов.
Чтобы продолжить сохраненный ранее сеанс, нажмите `File =>
Open Session' и выберите из списка имя нужного сеанса. После щелчка на
`Open' будет восстановлено полное состояние DDD для указанного
сеанса.
Сеанс с именем `[None]' -- это сеанс по умолчанию, который
активен при запуске DDD. Чтобы сохранить параметры для сеанса по
умолчанию, откройте его и запишите параметры. См. раздел 3.6.1.3 Сохранение параметров, для получения подробностей.
Если восстановленный сеанс включает дамп памяти, то отлаживаемая
программа будет в том же состоянии, в каком она была во время сохранения
сеанса; в частности, вы сможете исследовать данные программы. Однако, у
вас не будет возможности продолжить выполнение программы, поскольку ее
процесс и среда (открытые файлы, ресурсы, etc.) больше не существуют.
Тем не менее, вы сможете перезапустить программу, снова используя
восстановленные точки останова и отображения данных.
Открытие сеансов также восстанавливает определения команд, кнопок,
операции быстрого создания отображений и размер табуляции в исходнике.
Таким образом вы можете держать различные наборы определений для каждого
сеанса.
Вы также можете указать, какой сеанс следует открыть, при запуске
DDD. Чтобы вызвать DDD с сеансом сеанс, используйте
ddd --session сеанс
Есть также краткая форма записи, которая открывает сеанс и
вызывает подчиненный отладчик для исполняемого файла с именем
сеанс (в случае, если сеанс невозможно открыть):
ddd =сеанс
При перезапуске сеанса нет нужды давать другие ключи командной строки,
поскольку они будут перекрыты ключами, сохраненными в сеансе.
Для записи и восстановления сеансов DDD вы также можете использовать
менеджер сеансов для X Windows, такой как xsm.(7) Когда DDD
завершается менеджером сеансов, он сохраняет свое состояние под именем,
которое ему сообщает менеджер сеансов; восстановление X-сеанса
заставляет DDD перезагрузить сохраненное состояние.
Чтобы удалить сеансы, которые вам больше не нужны, выберите `File
=> Open Session' или `File => Save Session'.
Выделите ненужные сеансы и щелкните на `Delete'.
Вы можете изменить место, где 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 или подобной
программы.
Вы можете запустить DDD на удаленной машине, используя текущую машину
в качестве X-дисплея. Для вызова DDD на удаленной машине наберите
ddd -display дисплей
где дисплей -- это имя X-сервера, к которому следует
подсоединиться (например, `имя-машины:0.0', где
имя-машины -- это имя вашей машины).
Вместо указания ключа -display дисплей вы также можете
установить переменную среды DISPLAY равной дисплею.
Чтобы запустить подчиненный отладчик на удаленной машине, вам требуется
доступ к этой машине по `remsh' (в системах BSD это называется
`rsh').
Для запуска отладчика на удаленной машине имя-машины, вызовите
DDD как
ddd --host имя-машиныудаленная-программа
Если удаленное имя пользователя отличается от локального, используйте
ddd --host имя-машины --login имя-пользователяудаленная-программа
или
ddd --host имя-пользователя@имя-машиныудаленная-программа
В удаленном режиме отладки есть несколько трудных мест:
Удаленный отладчик запускается в вашем начальном каталоге на удаленной
машине. Следовательно, вы должны указывать абсолютный путь к
удаленной-программе (или путь относительно вашего начального
каталога на удаленной машине). То же относится к удаленным файлам с
дампами. Кроме того, убедитесь, что при отладке работающей программы вы
указываете ID удаленного процесса.
Удаленный отладчик запускается в неинтерактивном режиме. Некоторые
версии DBX плохо с этим справляются. Если вы не получили подсказку
от удаленного отладчика, используйте ключ --rhost вместо
--host. Тогда удаленный отладчик будет запущен через
интерактивную оболочку на удаленной машине, что может улучшить ситуацию.
Замечание: при использовании --rhost, DDD вызывает
подчиненный отладчик, как только появляется подсказка оболочки. Первый
кусок вывода на удаленной машине, завершающийся пробелом или знаком
`>', и после которого не следует перевод строки, считается
подсказкой оболочки. Если необходимо, настройте подсказку оболочки на
удаленной машине.
Для запуска удаленной программы DDD вызывает на удаленной машине
эмулятор терминала xterm, передавая в качестве адреса текущее
значение переменной среды DISPLAY. Если удаленная машина не может
запустить xterm или не имеет доступа к вашему X-дисплею,
запустите DDD с ключом --no-exec-window. Тогда ввод/вывод
программы будет идти через консоль отладчика DDD.
В удаленном режиме все исходники загружаются с удаленной машины; диалоги
для выбора файлов сканируют удаленные каталоги. Это может привести к
несколько более медленной работе, чем обычно.
Чтобы обнаружить проблемы, возникшие при удаленной отладке, запустите
DDD с ключом --trace. Тогда отдаваемые DDD команды
оболочки печатаются на стандартный поток ошибок.
Когда вы запускаете подчиненный отладчик на удаленной машине
(см. раздел 2.4 Удаленная отладка), все команды для обращения к подчиненному
отладчику и его файлам должны запускаться удаленно. Этим управляют
следующие ресурсы (см. раздел 3.6 Настройка DDD):
Ресурс:rshCommand(класс RshCommand)
Команда удаленной оболочки для запуска терминальных команд на удаленной
машине. Обычно это remsh, rsh, ssh или
on.
Ресурс:listCoreCommand(класс listCoreCommand)
Команда для перечисления всех файлов с дампами на удаленной машине.
Строка `@MASK@' заменяется на фильтр файлов. По умолчанию
принимается такая установка:
Команда для перечисления всех исполняемых файлов на удаленной машине.
Строка `@MASK@' заменяется на фильтр файлов. По умолчанию
действует такая установка:
Команда для перечисления всех исходных файлов на удаленной машине.
Строка `@MASK@' заменяется на фильтр файлов. По умолчанию
действует такая установка:
Отладчик GDB позволяет вам запускать отлаживаемую программу на
удаленной машине (называемой удаленной целью), тогда как GDB
работает на локальной машине.
См. раздел `Remote Debugging' в Debugging with GDB, для получения подробностей. В двух словах,
требуются следующие шаги:
Переслать исполняемый файл на удаленную цель.
Запустить на удаленной цели gdbserver.
Запустить DDD, используя GDB на локальной машине, и загрузить тот
же исполняемый файл с помощью команды GDB file.
Соединиться с удаленным сервером `gdbserver', применив команду
GDB target remote.
Локальный файл `.gdbinit' полезен для подготовки путей поиска, etc.
Разумеется, вы можете также комбинировать удаленные режимы DDD и
GDB, запуская DDD, GDB и отлаживаемую программу на разных
машинах.
Чтобы выбрать используемый по умолчанию отладчик, выберите `Edit
=> Preferences => Startup => Debugger Type'. Вы
можете сделать так, чтобы
DDD определял подходящий подчиненный отладчик автоматически по
аргументам командной строки. Это включается установкой `Determine
Automatically from Arguments'.
DDD запускал выбранный вами отладчик, как указано в `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, для получения подробной информации.
Данная строка содержит список разделенных переводами строки команд,
которые первым делом посылаются 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
Этот ресурс используется для записи и восстановления установок
отладчика.
Если `on' (по умолчанию), DDD записывает все команды
инициализации GDB во временный файл и велит GDB считать его, а не
посылает команды по одной. Это приводит к более быстрому запуску
(особенно если вы определяете много пользовательских команд). Если
`off', DDD посылает GDB команды по отдельности.
Эта строка содержит список разделенных переводами строки команд, которые
изначально посылаются DBX. По умолчанию она пуста.
Не используйте этот ресурс для настройки DBX; вместо этого, напишите
персональный файл `~/.dbxinit' или `~/.dbxrc'. Подробности
смотрите в документации по DBX.
Ресурс:dbxSettings(класс Settings)
Данная строка содержит список разделенных переводами строки команд,
которые также изначально посылаются DBX. По умолчанию она пуста.
Эта строка содержит список разделенных переводами строки команд, которые
изначально посылаются JDB. Этот ресурс можно использовать для
настройки JDB. По умолчанию он пуст.
Ресурс:jdbSettings(класс Settings)
Эта строка содержит список разделенных переводами строки команд, которые
также изначально посылаются JDB. По умолчанию она пуста.
DDD использует этот ресурс для записи и восстановления установок
JDB.
При загрузке исполняемого файла, DDD запрашивает у подчиненного
отладчика начальную позицию в исходном тексте -- обычно это функция
main. Если такая позиция не найдена, DDD пробует другие
символы из этого разделенного переводами строки списка. Значение,
которое принимается по умолчанию, велит DDD искать различные варианты
главной функции (в особенности главные функции Фортрана):
main\n\
MAIN\n\
main_\n\
MAIN_\n\
main__\n\
MAIN__\n\
_main\n\
_MAIN\n\
__main\n\
__MAIN
Если это `on', вызванный без аргументов DDD проверяет, не
содержит ли текущее выделение или буфер обмена имя файла или URL
выполняемой программы. Если это так, DDD автоматически откроет эту
программу для отладки. Если данный ресурс равен `off' (по
умолчанию), вызванный без аргументов DDD всегда будет запускаться без
отлаживаемой программы.
Следующие ресурсы управляют общением с подчиненным отладчиком.
Ресурс:blockTTYInput(класс BlockTTYInput)
Должен ли DDD блокироваться при чтении данных от подчиненного
отладчика через псевдотерминальный интерфейс. Большинство систем
UNIX, кроме GNU/Linux требуют этого; установите его в
`on'. На GNU/Linux, устанавливайте его равным `off'.
Значение `auto' (по умолчанию) всегда делает "лучший" выбор (то
есть лучший выбор из известных разработчикам DDD).
Ресурс:displayTimeout(класс DisplayTimeout)
Время ожидания (в миллисекундах) пока подчиненный отладчик закончит
вывод информации отображения. По умолчанию 2000.
Ресурс:positionTimeout(класс PositionTimeout)
Время ожидания (в миллисекундах) пока подчиненный отладчик закончит
вывод информации о позиции. По умолчанию 500.
Ресурс:questionTimeout(класс QuestionTimeout)
Время (в секундах) ожидания ответа от подчиненного отладчика. По
умолчанию 10.
Если `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 работает неправильно.