Окно исходного текста показывает текущий исходный код отлаживаемой
программы. См. раздел 4. Навигация по исходному коду, для получения подробностей.
Консоль отладчика принимает команды отладчика и показывает его
сообщения. См. раздел 10. Интерфейс командной строки, для дополнительной информации.
Кроме этих трех главных окон есть еще несколько дополнительных:
Панель команд предоставляет кнопки для часто используемых команд.
Обычно она располагается поверх окна исходного текста. См. раздел 3.3 Панель команд, для дополнительной информации.
Окно машинного кода показывает текущий машинный код. Обычно оно
располагается под текущим исходником. См. раздел 8.1 Исследование машинного кода, для
получения подробностей.
Окно выполнения показывает ввод и вывод отлаживаемой программы.
См. раздел 6.2 Использование окна выполнения, для дополнительной информации.
Полоска меню DDD предоставляет доступ ко всем функциям DDD.
File
Производит операции с файлами, такие как выбор программ, процессов и
сеансов, печать графов, перекомпиляция, а также выход.
Edit
Производит стандартные операции редактирования, такие как вырезка,
копирование, вставка и уничтожение выделенного текста. Также позволяет
редактировать параметры DDD и ваши предпочтения.
View
Предоставляет доступ к отдельным окнам DDD.
Program
Производит операции, относящиеся к отлаживаемой программе, такие как
запуск и останов.
Commands
Производит операции, относящиеся к командам DDD, такие как доступ к
истории команд или определение новых команд.
Status
Исследует состояние программы, например, следы вызовов, регистры или
нити.
Source
Производит операции, относящиеся к исходному коду, такие как поиск
объектов или редактирование точек останова.
Data
Производит операции, относящиеся к данным, такие как редактирование
отображений или размещение объектов в графе данных.
Maintenance
Производит операции, полезные для отладки DDD. По умолчанию это меню
выключено.
Help
Дает справку по использованию DDD.
Есть два способа выбрать элемент из ниспадающего меню:
Выбрать элемент в полоске меню, переместив к нему курсор и щелкнув
первой кнопкой мыши. Затем переместить курсор к нужному пункту
меню и снова щелкнуть левой кнопкой.
Выбрать элемент в полоске меню, переместив к нему курсор и нажав
первую кнопку мыши. Не отпуская кнопку, переместите курсор к
нужному пункту меню и отпустите кнопку.
Меню также можно отцепить (то есть превратить в постоянное окно),
выбрав штриховую линию сверху меню.
Если команда из ниспадающего меню не применима в данной ситуации, то эта
команда выключена, а ее имя выводится затененным. Вы не можете
вызывать затененные пункты меню. Например, многие команды в меню
`Edit' затенены, пока вы не выделите текст, на который они могут
действовать; когда вы выделяете блок текста, команды редактирования
включаются.
Меню `File' содержит операции, относящиеся к файлам, такие как
выбор программ, процессов и сеансов, печать графов, перекомпиляция, а
также выход из DDD.
Open Program
Open Class
Открыть программу или класс для отладки. См. раздел 4.2.1 Открывание программ,
для получения подробностей.
Open Recent
Повторно открыть для отладки программу, которую вы недавно уже
открывали. См. раздел 4.2.1 Открывание программ, для получения подробностей.
Open Core Dump
Открыть дамп памяти для отлаживаемой в текущий момент программы.
См. раздел 4.2.2 Открывание дампов памяти, для дополнительной информации.
Open Source
Открыть исходный файл отлаживаемой в текущий момент программы.
См. раздел 4.2.3 Открывание исходных файлов, для дополнительной информации.
Open Session
Продолжить сохраненный ранее сеанс DDD. См. раздел 2.3.2 Продолжение сеансов,
для получения подробностей.
Save Session As
Сохранить текущий сеанс DDD, чтобы его можно было продолжить
позднее. См. раздел 2.3.1 Сохранение сеансов, для получения подробностей.
Attach to Process
Подсоединиться к работающему процессу отлаживаемой программы.
См. раздел 6.3 Подсоединение к процессу, для получения подробностей.
Меню `Edit' содержит стандартные операции редактирования, такие как
вырезка, копирование, вставка и уничтожение выделенного текста. Оно
также позволяет редактировать параметры DDD и пользовательские
предпочтения.
Undo
Отменить последнее действие. Таким способом можно отменить почти все
команды. См. раздел 3.5 Отмена и возврат команд, для дополнительной информации.
Redo
Повторить последнее отмененное действие. Таким способом можно повторить
любую отмененную команду. См. раздел 3.5 Отмена и возврат команд, для дополнительной
информации.
Cut
Удаляет выделенный блок текста из текущей текстовой области и помещает
его в буфер обмена X Windows. Перед выполнением этой команды вы должны
выделить область текста -- мышью или с помощью обычных клавиш выделения
текста.
Этот пункт можно также применять к отображениям (см. раздел 7.3.1.11 Удаление отображений).
Copy
Помещает выделенный блок текста в буфер обмена X Windows. Вы можете
выделить текст мышью или с помощью клавиш. См. раздел 3.1.11.2 Настройка меню Edit,
об изменении принимаемых по умолчанию привязок клавиш.
Этот пункт можно также применять к отображениям (см. раздел 7.3.1.11 Удаление отображений).
Paste
Вставляет текущее значение буфера обмена X Windows в последнюю выбранную
текстовую область. Вы можете вставлять текст, который вы поместили в
буфер обмена с помощью `Copy' или `Cut'. Кроме того, вы
можете использовать `Paste' для вставки текста, помещенного в буфер
обмена другими приложениями.
Clear
Очищает последнюю выбранную текстовую область.
Delete
Удаляет выделенный блок текста из последней выбранной текстовой области,
но не помещает его в буфер обмена X Windows.
Этот пункт можно также применять к отображениям (см. раздел 7.3.1.11 Удаление отображений).
Select All
Выделяет все знаки из последней выбранной текстовой области.
См. раздел 3.1.11.2 Настройка меню Edit, об изменении принимаемых по умолчанию
привязок.
Preferences
Позволяет вам интерактивно настраивать DDD. См. раздел 3.6 Настройка DDD, для
дополнительной информации.
Debugger Settings
Позволяет настроить подчиненный отладчик. См. раздел 3.6.5 Установки отладчика,
для получения подробностей.
Save Options
Сохраняет все установки и предпочтения для следующего вызова DDD.
См. раздел 3.6.1.3 Сохранение параметров, для получения подробностей.
Начать выполнение программы с последними использованными аргументами.
См. раздел 6.1 Начало выполнения программы, для получения подробностей.
Run in Execution Window
Если включено, начать выполнение следующей программы в отдельном окне
выполнения. См. раздел 6.2 Использование окна выполнения, для дополнительной
информации.
Step
Продолжить выполнение программы до тех пор, пока не будет достигнута
другая исходная строка, затем остановить программу и вернуть управление
DDD. См. раздел 6.5 Продолжение выполнения, для получения подробностей.
Step Instruction
Выполнить одну машинную инструкцию, остановить выполнение и вернуться в
DDD. См. раздел 8.2 Выполнение машинного кода, для получения подробностей.
Next
Продолжить до следующей исходной строки в пределах текущего (самого
внутреннего) фрейма стека. Это аналогично `Step', но появляющиеся
в строке кода вызовы функций выполняются без останова.
См. раздел 6.5 Продолжение выполнения, для получения подробностей.
Next Instruction
Выполнить одну машинную инструкцию, но если это вызов функции, пройти до
возврата из нее. См. раздел 8.2 Выполнение машинного кода, для получения
подробностей.
Until
Продолжить выполнение до тех пор, пока не будет достигнута исходная
строка, идущая после текущей, в пределах текущего фрейма стека.
См. раздел 6.5 Продолжение выполнения, для получения подробностей.
Finish
Продолжить выполнение до возврата любой функции в выбранном фрейме
стека. Напечатать возвращенное значение (если оно есть).
См. раздел 6.5 Продолжение выполнения, для дополнительной информации.
Continue
Продолжить выполнение программы с того адреса, где она в последний раз
остановилась; все установленные по этому адресу точки останова
пропускаются. См. раздел 6.5 Продолжение выполнения, для дополнительной
информации.
Continue Without Signal
Продолжить выполнение, не посылая сигнал. Это полезно, когда ваша
программа остановилась из-за сигнала, и если продолжить ее с помощью
`Continue', она увидела бы этот сигнал. См. раздел 6.10 Обработка сигналов, для
дополнительной информации.
Kill
Уничтожить процесс отлаживаемой программы. См. раздел 6.11 Уничтожение программы, для получения подробностей.
Interrupt
Прервать выполнение программы. Это эквивалентно посыланию процессу
сигнала прерывания. См. раздел 5.3 Прерывание, для получения подробностей.
Abort
Аварийно остановить выполнение программы (и, возможно, отладчика). Это
эквивалентно посыланию процессу сигнала SIGABRT. См. раздел 2.2 Выход из DDD,
для получения подробностей.
Меню `Commands' производит операции, относящиеся к командам DDD,
такие как доступ к истории или определение новых команд.
Большая часть его пунктов на самом деле не предназначены для выполнения
через меню; они просто служат для напоминания об эквивалентных
командах клавиатуры.
Command History
Просмотреть историю команд. См. раздел 10.1.2 История команд, для получения
подробностей.
Previous
Показать предыдущую команду из истории. См. раздел 10.1.2 История команд, для получения
подробностей.
Next
Показать следующую команду из истории. См. раздел 10.1.2 История команд, для
получения подробностей.
Find Backward
Запустить наращиваемый поиск по истории команд. См. раздел 10.1.2 История команд, для
получения подробностей.
Find Forward
Запустить наращиваемый поиск в обратном направлении по истории команд.
См. раздел 10.1.2 История команд, для получения подробностей.
Quit Search
Выйти из наращиваемого поиска по истории команд. См. раздел 10.1.2 История команд,
для получения подробностей.
Complete
Завершить текущую команду в консоли отладчика. См. раздел 10.1 Ввод команд, для
получения подробностей.
Apply
Применить текущую команду в консоли отладчика. См. раздел 10.1 Ввод команд, для
получения подробностей.
Clear Line
Очистить текущую командную строку в консоли отладчика. См. раздел 10.1 Ввод команд, для получения подробностей.
Clear Window
Очистить консоль отладчика. См. раздел 10.1 Ввод команд, для получения
подробностей.
Define Command
Определить новую команду отладчика. См. раздел 10.5 Определение команд, для
дополнительной информации.
Меню `Status' позволяет вам узнать состояние программы, например,
просмотреть следы вызовов, регистры или нити.
Backtrace
Показать текущий след вызовов. См. раздел 6.7.2 Следы вызовов, обсуждение этой
темы.
Registers
Показать текущее содержимое регистров. См. раздел 8.3 Исследование регистров, для
дополнительной информации.
Threads
Показать текущие нити. См. раздел 6.9 Исследование нитей, для дополнительной
информации.
Signals
Показать или отредактировать обработку сигналов. См. раздел 6.10 Обработка сигналов, для
дополнительной информации.
Up
Выбрать фрейм стека (то есть функцию), в котором была вызвана текущая
функция. Это перемещает вас к внешнему фрейму, к фреймам с большими
номерами, которые существуют дольше. См. раздел 6.7 Исследование стека, для дополнительной
информации.
Down
Выбрать фрейм стека (то есть функцию), который был вызван из текущего.
Это перемещает вас к внутреннему фрему, к фреймам с меньшими номерами,
которые были созданы не так давно. См. раздел 6.7 Исследование стека, для дополнительной
информации.
Меню `Maintenance' производит операции, которые полезны для отладки
DDD.
По умолчанию это меню выключено; включить его можно, специально запросив
при запуске DDD (с помощью ключа --maintenance;
см. раздел 2.1.2 Ключи DDD). Оно также включается, когда DDD получает фатальный
сигнал.
Debug DDD
Вызвать отладчик (обычно GDB) и присоединить его к данному процессу
DDD. Это полезно, только если вы сопровождаете DDD.
Dump Core Now
Заставляет данный процесс DDD сбросить дамп памяти. Этого также
можно добиться, послав DDD сигнал SIGUSR1.
Tic Tac Toe
Вызвать игру крестики-нолики. Вы должны постараться поставить три знака
"стоп" в один ряд, мешая DDD сделать то же самое с черепами. Чтобы
перезапустить игру, щелкните на `New Game'.
When DDD Crashes
Выбрать действие, которое предпринимается, когда DDD получает
фатальный сигнал.
Debug DDD
Вызвать отладчик для дампа памяти DDD, когда DDD терпит крах. Это
полезно, только если вы сопровождаете DDD.
Dump Core
Просто сбросить дамп памяти, когда DDD рушится; не вызывать отладчик.
Это принимается по умолчанию, поскольку дамп может содержать важную
информацию, необходимую для отладки DDD.
Do Nothing
Не сбрасывать дамп памяти и не вызывать отладчик, когда DDD терпит
крах.
Можно сделать так, чтобы ниспадающие меню поднимались автоматически.
Ресурс:autoRaiseMenu(класс AutoRaiseMenu)
Если `on' (по умолчанию), DDD будет всегда сохранять ниспадающие
меню выше главного окна DDD. Если эта установка конфликтует с вашим
менеджером окон, или если менеджер окон не поднимает окна автоматически,
установите этот ресурс в значение `off'.
Время (в миллисекундах), в течении которого первоначально поднятое окно
блокирует другие автоматические поднимания. Это делается для
предотвращения входа двух перекрывающихся автоматически поднимаемых окон
в цикл автоматического поднимания. По умолчанию это 100.
Меню `Edit' можно по-разному настраивать. Для настройки ключей
используйте `Edit => Preferences => Startup'.
Ключ Ctrl+C можно привязать к разным действиям, каждое
соответствует своему стандарту интерфейса.
Copy
Привязывает Ctrl+C к операции копирования, как предписывает
стандарт интерфейса KDE. При такой установке используйте для прерывания
отлаживаемой программы клавишу ESC.
Interrupt
Эта установка (действующая по умолчанию) привязывает Ctrl+C к
операции прерывания, как во многих программах UNIX. При такой
установке копируйте текст в буфер обмена с помощью Ctrl+Ins.
Ctrl+A тоже можно привязать к разным действиям.
Select All
Эта установка (принимаемая по умолчанию) привязывает Ctrl+A к
операции `Select All', как предписывает стандарт интерфейса KDE.
При такой установке используйте для перемещения курсора в начало строки
клавишу Home.
Beginning of Line
Эта установка привязывает Ctrl+A к операции `Beginning of
Line', как во многих программах UNIX для редактирования текста. Для
выделения всего текста при такой установке используйте
Ctrl+Shift+A.
Вот соответствующие ресурсы DDD:
Ресурс:cutCopyPasteBindings(класс BindingStyle)
Управляет привязками клавиш для операций с буфером обмена.
Если это `Motif' (по умолчанию), то вырезка/копирование/вставка
находятся на Shift+Del/Ctrl+Ins/Shift+Ins. Это
соответствует стандарту интерфейса Motif.
Если это `KDE', вырезка/копирование/вставка находятся на
Ctrl+X/Ctrl+C/Ctrl+V. Это соответствует стандарту
интерфейса KDE. Обратите внимание, Ctrl+C не прерывает
отлаживаемую программу; используйте для этого ESC.
Ресурс:selectAllBindings(класс BindingStyle)
Управляет привязкой клавиш для операции `Select All'.
Если это `Motif', Select All находится на Shift+Ctrl+A.
Если это `KDE' (по умолчанию), Select All находится на
Ctrl+A. Так предписывает стандарт интерфейса KDE. Заметьте, что
Ctrl+A при этом не перемещает курсор в начало строки; используйте
для этого Home.
Некоторые команды DDD требуют аргумента. Аргумент задается в
поле аргумента, помеченном как `():'. Есть четыре основных
способа задавать аргументы:
Вы можете напечатать аргумент вручную.
Вы можете вставить текущее выделение в поле аргумента (обычно с
помощью второй кнопки мыши). Если вы хотите сначала очистить
старое содержимое, щелкните на метку `():'.
Вы можете выбрать объект из окна исходника или данных. Тогда
этот объект автоматически копируется в поле аргумента.
Вы можете выбрать ранее использовавшийся аргумент из ниспадающего
меню справа от поля аргументов.
При использовании GDB или Perl поле аргумента предоставляет механизм
завершения. Вы можете ввести несколько первых знаков и нажать клавишу
TAB для завершения. Повторное нажатие TAB покажет другие
варианты завершения.
После ввода аргумента вы можете выбрать одну из трех кнопок справа. С
большей частью этих кнопок совмещены меню; это обозначается маленькой
стрелкой в верхнем правом углу. Нажатие и удержание на такой кнопке
первой кнопки мыши вызовет меню дальнейших операций.
Это кнопки на панели инструментов. Заметьте, что не все кнопки могут
быть неактивными, в зависимости от текущего состояния и возможностей
подчиненного отладчика.
Lookup
Найти аргумент `()' в исходном коде. См. раздел 4.3.1 Поиск определений, для
дополнительной информации.
Find >>
Найти следующее появление аргумента `()' в текущем исходном коде.
См. раздел 4.3.2 Текстуальный поиск, для получения подробностей.
Break/Clear
Включить или выключить точку останова (см. раздел 5.1 Точки останова) в позиции
`()'.
Break
Если в позиции `()' нет точки останова, то эта кнопка помечена как
`Break'. Щелчок на `Break' устанавливает точку останова в
позиции `()'. См. раздел 5.1.1 Установка точек останова, для получения
подробностей.
Clear
Если в `()', уже есть точка останова, то эта кнопка помечена как
`Clear'. Щелчок на `Clear' очищает (удаляет) точку останова в
позиции `()'. См. раздел 5.1.2 Удаление точек останова, для получения
подробностей.
Watch/Unwatch
Включить или выключить точку наблюдения (см. раздел 5.2 Точки наблюдения) для
выражения `()'.
Watch
Если за `()' не установлено наблюдение, то эта кнопка помечена как
`Watch'. Щелчок на `Watch' создает точку наблюдения для
выражения `()'. См. раздел 5.2.1 Установка точек наблюдения, для
дополнительной информации.
Unwatch
Если за `()' установлено наблюдение, то эта кнопка помечена как
`Unwatch'. Щелчок на `Unwatch' очищает (удаляет) точку
наблюдения для `()'. См. раздел 5.2.4 Удаление точек наблюдения, для
получения подробностей.
Кнопки панели инструментов DDD могут отображаться в различных стилях,
это настраивается через `Edit => Preferences =>
Startup'.
Images
Позволяет выводить на каждой кнопке панели инструментов рисунок,
иллюстрирующий действие.
Captions
Показывать под рисунком название действия.
По умолчанию показываются и рисунки, и названия, но вы можете выбрать
только рисунки (для экономии места) или только названия.
Если вы предпочли не выводить ни рисунков, ни названий, кнопки панели
инструментов помечаются так же, как другие кнопки, как в DDD 2.x.
Обратите внимание: это подразумевает, что при совмещенной конфигурации
окон обычная панель инструментов не может отображаться; она заменяется
на две отдельные панели инструментов, как в DDD 2.x.
Если вы включите кнопки `Flat' (по умолчанию), то рамка кнопок
панели инструментов будет появляться только тогда, когда над ними
находится указатель мыши. Это последнейшее и величайшее изобретение в
области графических интерфейсов можно выключить, чтобы рамка кнопок
показывалась всегда.
Если вы включите кнопки `Color', рисунки панели инструментов будут
расцвечиваться, когда на них заходит указатель мыши. Если DDD собран
с Motif 2.0 или более поздним, вы можете также выбрать третью установку,
когда кнопки всегда цветные.
Цветовой ключ @acronym{XPM} для использования в активных кнопках
(находящихся под указателем мыши и действующих). `c' означает
цвет, `g' (по умолчанию) означает градации серого, а `m' ---
монохромное изображение.
Ресурс:buttonCaptions(класс ButtonCaptions)
Выводить кнопки панели инструментов с названиями (`on', по
умолчанию) или без (`off'). Если не включены ни рисунки, ни
названия, кнопки панели инструментов показываются с обычными метками.
Смотрите также `buttonImages' ниже.
Геометрия фрагмента пиктограммы, содержащего название. По умолчанию это
`29x7+0-0'.
Ресурс:buttonImages(класс ButtonImages)
Выводить кнопки панели инструментов с рисунками (`on', по
умолчанию) или без (`off'). Если не включены ни рисунки, ни
названия, кнопки панели инструментов показываются с обычными метками.
Смотрите также `buttonCaptions' выше.
Геометрия фрагмента пиктограммы, содержащего рисунок. По умолчанию это
`25x21+2+0'.
Ресурс:buttonColorKey(класс ColorKey)
Цветовой ключ @acronym{XPM} для использования в неактивных кнопках
(не находящихся под указателем мыши или нечувствительных). `c'
означает цвет, `g' (по умолчанию) означает градации серого, а
`m' -- монохромное изображение.
Ресурс:flatToolbarButtons(класс FlatButtons)
Если это `on' (по умолчанию), все кнопки с рисунками или названиями
выглядят `плоскими' -- трехмерная рамка показывается, только когда на
пиктограмму заходит указатель мыши. Если это `off', трехмерная
рамка показывается всегда.
Ресурс:flatDialogButtons(класс FlatButtons)
Если это `on' (по умолчанию), все кнопки диалоговых окон с
рисунками или названиями выглядят `плоскими' -- трехмерная рамка
показывается, только когда на пиктограмму заходит указатель мыши. Если
это `off', трехмерная рамка показывается всегда.
Панель команд -- это маленькое окно, дающее доступ к самым часто
используемым командам DDD. Его можно передвигать поверх окон DDD,
но можно и поместить отдельно от них.
По умолчанию панель команд прикрепляется к окну DDD с исходным
текстом: куда бы вы не передвинули это окно, панель команд последует за
ним, так что расстояние от окна исходного текста до панели команд
остается постоянным. Кроме того, по умолчанию панель команд
автоматически поднята, то есть всегда остается поверх других окон
DDD.
Панель команд можно настроить так, чтобы она отображалась в виде
командной полоски меню в верхней части окна исходника; смотрите
`Edit => Preferences => Source => Tool Buttons
Location' для получения подробностей.
Всякий раз при сохранении состояния DDD, запоминается также
расстояние от панели команд до окна исходного текста, так что вы можете
выбрать свое собственное предпочтительное расположение панели. Для
перемещения панели команд к сохраненной позиции используйте `View
=> Command Tool'.
Это кнопки панели команд. Заметьте, что некоторые кнопки могут быть
неактивными, в зависимости от текущего состояния и возможностей
подчиненного отладчика.
Run
Начать выполнение программы. Когда вы щелкаете на этой кнопке, ваша
программа сразу начинает выполняться. См. раздел 6. Запуск программы, для дополнительной
информации.
Interrupt
Прервать выполнение программы. Это эквивалентно посыланию процессу
сигнала прерывания. См. раздел 5.3 Прерывание, для дополнительной информации.
Step
Продолжить выполнение вашей программы до тех пор, пока управление не
достигнет другой исходной строки, затем остановить выполнение и вернуть
управление DDD. См. раздел 6.5 Продолжение выполнения, для дополнительной
информации.
Stepi
Выполнить одну машинную инструкцию, затем остановить программу и вернуть
управление DDD. См. раздел 8.2 Выполнение машинного кода, для дополнительной
информации.
Next
Продолжить до следующей исходной строки в текущем (самом внутреннем)
фрейме стека. Это аналогично `Step', но появляющиеся на текущей
строке вызовы функций выполняются без остановки. См. раздел 6.5 Продолжение выполнения, для дополнительной информации.
Nexti
Выполнить одну машинную инструкцию, но если это вызов функции,
продолжить до возврата из нее. См. раздел 8.2 Выполнение машинного кода, для
дополнительной информации.
Until
Продолжить выполнение до тех пор, пока не будет достигнута строка дальше
текущей, в пределах текущего фрейма стека. См. раздел 6.5 Продолжение выполнения, для дополнительной информации.
Finish
Продолжить выполнение до возврата функции текущего фрейма стека.
Напечатать возвращенное значение (если оно есть). См. раздел 6.5 Продолжение выполнения, для дополнительной информации.
Cont
Продолжить выполнение программы с того адреса, где она последний раз
остановилась; все установленные по этому адресу точки останова
пропускаются. См. раздел 6.5 Продолжение выполнения, для дополнительной
информации.
Kill
Уничтожить процесс отлаживаемой программы. См. раздел 6.11 Уничтожение программы, для дополнительной информации.
Up
Выбрать фрейм стека (то есть функцию), которая вызвала текущую. Это
переносит к более внешнему фрейму, к более высоким номерам фреймов, к
более старым фреймам. См. раздел 6.7 Исследование стека, для получения подробностей.
Down
Выбрать фрейм стека (то есть функцию), которая была вызвана из текущей.
Это переносит к более внутреннему фрейму, к более низким номерам
фреймов, к более новым фреймам. См. раздел 6.7 Исследование стека, для получения
подробностей.
Undo
Отменить последнее действие. Таким способом можно отменить почти все
команды. См. раздел 3.5 Отмена и возврат команд, для дополнительной информации.
Redo
Повторить последнее отмененное действие. Таким способом можно повторить
любую отмененную команду. См. раздел 3.5 Отмена и возврат команд, для дополнительной
информации.
Вы можете выключить панель команд и вынести ее кнопки на отдельную
строку под полоской меню. Панель команд выключается установкой
`Edit => Preferences => Source => Tool Buttons
Location => Source Window'.
Вот соответствующие ресурсы:
Ресурс:commandToolBar(класс ToolBar)
Показывать командные кнопки в панели инструментов над окном исходника
(`on') или на панели команд (`off', по умолчанию). Включение
командной панели инструментов выключает панель команд и наоборот.
Следующие ресурсы управляют позицией панели команд (см. раздел 3.6 Настройка DDD):
Ресурс:autoRaiseTool(класс AutoRaiseTool)
Если это `on' (по умолчанию), DDD всегда будет держать панель
команд поверх других окон DDD. Если данная установка конфликтует с
вашим менеджером окон, или если менеджер окон все равно хранит панель
команд наверху, установите этот ресурс в `off'.
Ресурс:stickyTool(класс StickyTool)
Если это `on' (по умолчанию), панель команд автоматически повторяет
любое перемещение окна исходного текста. Всякий раз при перемещении
окна исходника панель команд передвигается на такое же расстояние, так
что их относительное расположение остается неизменным. Если это
`off', панель команд не следует за перемещениями окна исходника.
Ресурс:toolRightOffset(класс Offset)
Расстояние между правой границей панели команд и правой границей
исходного текста (в пикселях). По умолчанию это 8.
Ресурс:toolTopOffset(класс Offset)
Расстояние между верхней границей панели команд и верхней границей
исходного текста (в пикселях). По умолчанию это 8.
Следующие ресурсы управляют оформлением панели команд
(см. раздел 3.6 Настройка DDD):
Ресурс:decorateTool(класс Decorate)
Этот ресурс управляет оформлением панели команд.
Если это `off', панель команд создается в виде прозрачного
окна. Некоторые оконные менеджеры автоматически хранят прозрачные окна
поверх их родителей, что подходит для панели команд. Однако, может
оказаться, что ваш менеджер окон сконфигурирован таким образом, что
прозрачные окна не оформляются, а это означает, что вы не сможете легко
передвигать панель команд.
Если это `on', DDD отображает панель команд как окно
верхнего уровня. Такие окна всегда оформляются оконным менеджером.
Однако, окна верхнего уровня не сохраняются автоматически выше других
окон, поэтому вам также может пригодиться ресурс `autoRaiseTool'.
Если это `auto' (по умолчанию), DDD проверяет, оформляет ли
оконный менеджер прозрачные окна. Если да, панель команд отображается
как прозрачное окно (как при установке `off'); если нет, панель
команд отображается в виде окна верхнего уровня (как при установке
`on'). Таким образом, панель команд всегда оформляется "лучшим"
методом, но лишняя проверка занимает некоторое время.
В DDD есть обширная интерактивная справочная система. Здесь
описывается, как получить справку, работая в DDD.
Вы можете получить короткий справочный текст по большинству кнопок
DDD, просто наведя на них указатель мыши. Спустя секунду появится
небольшое окно (называемое подсказкой для кнопки или
всплывающей подсказкой), которое дает подсказку о назначении
кнопки. Подсказка исчезает, когда вы перемещаете указатель мыши к
другому объекту.
Строка состояния также показывает информацию о текущем выделенном
объекте. Щелкнув на строке состояния, вы можете просмотреть последние
сообщения.
Вы можете получить подробную справку по любому видимому объекту DDD.
Просто укажите на интересующий вас объект и нажмите клавишу F1.
Это выдаст подробный справочный текст.
Все диалоговые окна DDD содержат кнопки `Help', дающие подробную
информацию об этом диалоге.
Вы можете получить справку по командам отладчика, введя на приглашение
отладчика команду help. См. раздел 10.1 Ввод команд, для получения
подробностей о вводе команд.
Если вы окончательно застряли, попробуйте `Help => What
Now?' (пункт `What Now?' из меню `Help') или нажмите
Ctrl+F1. В зависимости от текущего состояния DDD даст вам
несколько подсказок о возможных дальнейших действиях.
Разумеется, вы всегда можете обратиться к интерактивной
документации:
`Help => DDD Reference' предоставляет доступ к
руководству по DDD, самому полному справочнику.
`Help => Debugger Reference' показывает интерактивную
документацию по подчиненному отладчику.
`Help => DDD WWW Page' предоставляет доступ к
последней информации о DDD.
Наконец, совет дня DDD дает важные сообщения при каждом вызове
DDD.
Если все-таки вы допустили ошибку, не беспокойтесь: почти все команды
DDD можно отменить. См. раздел 3.5 Отмена и возврат команд, для дополнительной
информации.
Меню `Edit' показывает, какие команды будут отменены или повторены
следующими; это также указывается во всплывающей справке для кнопок
`Undo' и `Redo'.
DDD контролируется несколькими ресурсами -- определяемыми
пользователем переменными, которым можно придавать особые значения для
управления поведением DDD и его настройки.
Большинство ресурсов DDD можно установить интерактивно, когда DDD
работает, или при запуске DDD. См. раздел Указатель ресурсов, полный
список ресурсов DDD.
Сначала мы обсудим работу настройки вообще; потом перейдем к настройке
тех частей DDD, о которых уже говорилось.
Подобно любой программе для X Windows, DDD может получить значения
ресурсов из нескольких источников. Для DDD, наиболее важными
являются такие:
Файл `~/.ddd/init' (`~' обозначает ваш начальный
каталог). DDD считывает этот файл при запуске; определенные в нем
ресурсы перекрывают все остальные источники (кроме ресурсов, неявно
заданных в аргументах командной строки).
Если установлена переменная среды DDD_STATE, вместо
`~/.ddd/' используется ее значение.
Файл ресурсов по умолчанию `Ddd'. Этот файл обычно
закомпилирован в исполняемый файл DDD. Если он существует, то
определяемые в нем значения ресурсов перекрывают закомпилированные
значения. Если версия файла ресурсов по умолчанию `Ddd' не
совпадает с версией исполняемого файла DDD, DDD может работать
неправильно; в таком случае вам выдадут предупреждение.(8)
Ключи командной строки. Эти ключи перекрывают все остальные установки
ресурсов.
Если установлена переменная среды DDD_SESSION, то она обозначает
имя сеанса, который следует начать, и перекрывает все ключи и ресурсы.
Это применяется, только когда DDD перезапускает сам себя.
Не для каждого ресурса есть соответствующий ключ командной строки.
Каждый ресурс (в файле `~/.ddd/init' или
`Ddd') определяется с помощью строки
Ddd*ресурс: значение
Например, чтобы установить ресурс `pollChildStatus' в значение
`off', вы написали бы в файле `~/.ddd/init' так:
Ddd*pollChildStatus: off
Подробности о синтаксисе спецификаций ресурсов вы можете найти в разделе
RESOURCES страницы man X(1).
Использовать DDD для изменения параметров, а именно `Edit
=> Preferences'. Это работает для большинства важных ресурсов
DDD. Не забудьте сохранить параметры (см. раздел 3.6.1.3 Сохранение параметров), чтобы они применялись и к другим сеансам DDD.
Кроме того, вы можете вызывать DDD с подходящими ключами командной
строки. Это изменяет соответствующий ресурс для данного конкретного
экземпляра DDD. Однако, если вы сохраните параметры
(см. раздел 3.6.1.3 Сохранение параметров), измененный ресурс будет также
применяться к будущим вызовам.
И наконец, вы можете установить нужный ресурс в файле
`.ddd/init' в вашем начальном каталоге. См. раздел Указатель ресурсов, список ресурсов DDD.
Вы можете сохранить текущие установки параметров, выбрав `Edit
=> Save Options'. Параметры записываются в файл с именем
`.ddd/init' в вашем начальном каталоге. Если активен сеанс
сеанс, то параметры сохраняются в файле
`~/.ddd/sessions/сеанс/init'.
Подсказки для кнопок помогают новичкам, но могут отвлекать опытных
пользователей. Вы можете выключить всплывающие подсказки через
`Edit => Preferences => General => Automatic
display of Button Hints => as Popup Tips'.
Вы можете также выключить подсказки, отображаемые в строке состояния.
Просто переключите `Edit => Preferences => General
=> Automatic Display of Button Hints => in the Status
Line'.
DDD полагается на несколько внешних программ, которые задаются через
`Edit => Preferences => Helpers'.
Для декомпрессии справочных текстов вы можете определить команду
`Uncompress':
Ресурс:uncompressCommand(класс UncompressCommand)
Команда для декомпрессии встроенного руководства по DDD, лицензии
DDD и новостей DDD. Принимает сжатый текст со стандартного ввода
и пишет разжатый текст на стандартный вывод. По умолчанию используется
gzip -d -c; другие типичные значения включают zcat и
gunzip -c.
Для просмотра веб-страниц вы можете определить команду `Web
Browser':
Ресурс:wwwCommand(класс WWWCommand)
Команда для запуска WWW-броузера. Строка `@URL@' заменяется
на @acronym{URL}, который нужно открыть. По умолчанию сначала пробуется
уже запущенный Netscape (mozilla, затем netscape),
потом $WWWBROWSER, потом DDD пытается запустить новый
процесс Netscape, потом пробуется запущенный Emacs, потом вызывается
Mosaic, а потом Lynx в xterm.
Чтобы указать в качестве броузера `netscape-4.0', используйте такую
установку:
Ddd*wwwCommand: \
netscape-4.0 -remote 'openURL(@URL@)' \
|| netscape-4.0 '@URL@'
Эта команда сначала пытается соединиться с работающим броузером
netscape-4.0; если это не получается, она запускает новый процесс
netscape-4.0.
Это WWW-страница, которая показывается по умолчанию командой
`Help ' DDD WWW Page:
Отмену команд можно настраивать в нескольких аспектах.
Чтобы установить максимальный размер буфера отмены, установите
`Edit => Preferences => General => Undo Buffer
Size'.
Это соответствует ресурсу `maxUndoSize':
Ресурс:maxUndoSize(класс MaxUndoSize)
Максимальный объем памяти (в байтах) для буфера отмены. Полезно для
ограничения затрат памяти. Отрицательная величина означает, что
ограничения нет. По умолчанию принимается 2000000, или 2000
килобайт.
Вы можете также ограничить число вхождений в буфере отмены,
безотносительно его размера (см. раздел 3.6 Настройка DDD):
Ресурс:maxUndoDepth(класс MaxUndoDepth)
Максимальное число вхождений в буфере отмены. Это ограничивает
количество действий, которые можно будет отменить, и количество
показываемых состояний в историческом режиме. Полезно для ограничения
затрат памяти. Отрицательная величина (по умолчанию) означает, что
ограничения нет.
Чтобы очистить буфер отмены в любое время, уменьшив таким образом объем
занятой памяти, используйте `Edit => Preferences =>
General => Clear Undo Buffer'.
Вы можете выключить заставку, которая показывается при запуске. Для
этого просто выберите `Edit => Preferences => Startup
DDD Splash Screen'.
Это значение применяется только к следующему запуску DDD.
С этой установкой связан следующий ресурс:
Ресурс:splashScreen(класс SplashScreen)
Если `on' (по умолчанию), показывать при запуске заставку DDD.
Вы можете также управлять внешним видом заставки (см. раздел 3.6 Настройка DDD):
Ресурс:splashScreenColorKey(класс ColorKey)
Цветовой ключ для заставки DDD. Возможные значения включают:
`c' (по умолчанию) цветное изображение,
`g' много градаций серого,
`g4' четыре градации серого,
`m' монохромное изображение.
`best' подбирает наилучший вариант для вашего дисплея.
Пожалуйста, обратите внимание: если DDD работает на монохромном
дисплее, или если DDD был скомпилирован без библиотеки @acronym{XPM},
может отображаться только монохромная версия (`m').
По умолчанию DDD объединяет команды, исходный код и данные в единое
окно верхнего уровня. Чтобы получить отдельные окна верхнего уровня для
исходника, данных и консоли отладчика, установите `Edit =>
Preferences => Startup => Window Layout => Separate
Windows'.
Соответствующие ресурсы DDD:
Ресурс:separateDataWindow(класс Separate)
Если это `on', окно данных и консоль отладчика отображаются в виде
отдельных окон верхнего уровня. Если это `off' (по умолчанию),
окно данных соединено с консолью отладчика.
Ресурс:separateSourceWindow(класс Separate)
Если это `on', окно исходника и консоль отладчика отображаются в
виде отдельных окон верхнего уровня. Если это `off' (по
умолчанию), окно исходника соединено с консолью отладчика.
По умолчанию панели инструментов DDD располагаются в верхней части
окна. Если вы предпочитаете, чтобы они находились внизу, как в DDD
2.x и более ранних версиях, установите `Edit => Preferences
=> Startup => Tool Bar Appearance => Bottom'.
С этой установкой связан ресурс `toolbarsAtBottom':
Ресурс:toolbarsAtBottom(класс ToolbarsAtBottom)
Помещать панели инструментов для исходного кода и данных вверху,
соответственно, исходного кода и данных (`off', по умолчанию) или
внизу, как в DDD 2.x (`on').
Размещение внизу поддерживается только для отдельных панелей
инструментов -- то есть, вы должны либо выбрать раздельные окна, либо
сконфигурировать панель инструментов так, чтобы в ней не было ни
рисунков, ни названий (см. раздел 3.2.1 Настройка панели инструментов).
Если вы используете соединенные окна, вы можете сделать одну панель
инструментов или две. По умолчанию DDD создает две панели
инструментов при использовании раздельных окон и выключенных названиях и
рисунках, но вы также можете явно изменить данную установку через такой
ресурс:
Ресурс:commonToolBar(класс ToolBar)
Показывать кнопки панели инструментов в одной общей панели вверху общего
окна DDD (`on', по умолчанию), или помещать их в двух различных
панелях инструментов, одной для операций с данными, а другой для
операций с исходным текстом, как в DDD 2.x (`off').
Вы также можете изменить позицию строки состояния
(см. раздел 3.6 Настройка DDD):
Ресурс:statusAtBottom(класс StatusAtBottom)
Если это `on' (по умолчанию), строка состояния помещается внизу
окна DDD для исходного кода. Если это `off', она помещается
вверху этого окна (как в DDD 1.x).
См. раздел 2.1.2 Ключи DDD, как установить эти ресурсы из командной строки при запуске
DDD.
Вы можете конфигурировать основные шрифты DDD в время работы. Каждый
шрифт задается с помощью двух элементов:
Семейство шрифтов -- это спецификация шрифтов X, где начальную
часть `производитель-' можно опустить, как и любую часть
после семейства. Таким образом, обычно достаточно пары
`семейство-насыщенность'.
Размер шрифта задается в (независящих от разрешения) десятых долях
пункта.
Чтобы указать шрифты, выберите `Edit => Preferences
=> Fonts'.
Кнопка `Browse' открывает программу выбора шрифтов, где вы можете
интерактивно подбирать шрифты и их атрибуты. Щелчок на `quit' или
`select' передает все отличающиеся от принимаемых по умолчанию
значения в панель настройки шрифтов DDD.
Используя эту панель, можно установить следующие шрифты:
Default Font
Шрифт DDD по умолчанию, используемый для меток, меню и кнопок. По
умолчанию это `helvetica-bold'.
Variable Width
Пропорциональный шрифт DDD, используемый для справочного текста и
сообщений. По умолчанию это `helvetica-medium'.
Fixed Width
Равноширинный шрифт DDD, используемый для исходного кода, консоли
отладчика, текстовых полей, отображений данных и окна выполнения. По
умолчанию это `lucidatypewriter-medium'.
Изменения в этой панели не имеют мгновенного эффекта. Вы можете
сохранить параметры (с помощью `Edit => Save Options'),
чтобы задействовать изменение в будущих сеансах DDD,
или перезапустить DDD (с помощью `File => Restart
DDD'), чтобы задействовать их во вновь созданном сеансе.
Когда в этой панели делаются изменения, DDD автоматически предложит
вам перезапустить себя, чтобы эти изменения подействовали. Заметьте,
что даже после перезапуска вы должны будете сохранить параметры, чтобы
ваши изменения стали постоянными.
Кнопка `Reset' восстанавливает последние сохраненные предпочтения.
Вот ресурсы, связанные с заданием шрифтов:
Ресурс:defaultFont(класс Font)
Шрифт DDD по умолчанию, используемый для меток, меню, кнопок, etc.
Этот шрифт задается в виде спецификации шрифта X, где начальная часть
производитель может быть опущена, как и любая часть после
семейства.
Значение по умолчанию -- `helvetica-bold'.
Чтобы установить шрифт DDD по умолчанию равным, скажем,
`helvetica medium', вставьте строку
Ddd*defaultFont: helvetica-medium
в ваш файл `~/.ddd/init'.
Ресурс:defaultFontSize(класс FontSize)
Размер шрифта DDD по умолчанию, в десятых долях пункта. Этот ресурс
перекрывает любую спецификацию размера шрифта из ресурса
`defaultFont' (смотрите выше). Значение по умолчанию равно
120, что задает двенадцатипунктовый шрифт.
Ресурс:variableWidthFont(класс Font)
Пропорциональный шрифт DDD, используемый для справочного текста и
сообщений. Этот шрифт задается в виде спецификации шрифта X, где
начальная часть производитель может быть опущена, как и любая
часть после семейства.
Значение по умолчанию равно `helvetica-medium-r'.
Чтобы установить семейство пропорционального шрифта DDD равным,
скажем, `times', вставьте строку
Ddd*fixedWidthFont: times-medium
в ваш файл `~/.ddd/init'.
Ресурс:variableWidthFontSize(класс FontSize)
Размер пропорционального шрифта DDD, в десятых долях пункта. Этот
ресурс перекрывает любую спецификацию размера шрифта из ресурса
`variableWidthFont' (смотрите выше). Значение по умолчанию равно
120, что задает двенадцатипунктовый шрифт.
Ресурс:fixedWidthFont(класс Font)
Равноширинный шрифт DDD, используемый для исходного кода, консоли
отладчика, текстовых полей, отображений данных и окна выполнения. Этот
шрифт задается как спецификация шрифта X, где начальная часть
производитель может быть опущена, как и любая часть после
семейства.
Значение по умолчанию -- `lucidatypewriter-medium'.
Чтобы установить семейство равноширинного шрифта DDD равным, скажем,
`courier', вставьте строку
Ddd*fixedWidthFont: courier-medium
в ваш файл `~/.ddd/init'.
Ресурс:fixedWidthFontSize(класс FontSize)
Размер равноширинного шрифта DDD, в десятых долях пункта. Этот
ресурс перекрывает любую спецификацию размера шрифта из ресурса
`fixedWidthFont' (смотрите выше). Значение по умолчанию равно
120, что задает двенадцатипунктовый шрифт.
Поскольку все ресурсы для задания размеров шрифтов принадлежат одному
классу (и по умолчанию имеют одинаковое значение), вы можете легко
изменить размер шрифта DDD по умолчанию на, скажем, 9.0 пунктов,
вставив строку
Ddd*FontSize: 90
в свой файл `~/.ddd/init'.
Команда для выбора шрифтов задается так:
Ресурс:fontSelectCommand(класс FontSelectCommand)
Команда для выбора шрифта из списка. Строка `@FONT@' заменяется
на текущий шрифт DDD по умолчанию; строка `@TYPE@' заменяется
на символьное имя редактируемого шрифта DDD. Эта программа должна
либо поместить имя выбранного шрифта в первичное выделение, либо
напечатать его на стандартный вывод. Типичное значение такое:
Ddd*fontSelectCommand: xfontsel -print
См. раздел 2.1.2 Ключи DDD, как установить эти ресурсы из командной строки при запуске
DDD.
Когда окна объединены, как в установке по умолчанию, вы можете включать
и выключать отдельные окна DDD переключая соответствующие пункты меню
`View' (см. раздел 3.1.3 Меню View). При использовании раздельных окон
см. раздел 3.6.4.2 Размещение окон) вы можете закрывать их через `File
=> Close' или с помощью вашего оконного менеджера.
Следующие ресурсы управляют тем, открыты окна или нет при запуске
DDD. Эти ресурсы непосредственно привязаны к пунктам меню
`View':
Ресурс:openDataWindow(класс Window)
Если это `off' (по умолчанию), окно данных при запуске закрыто.
Ресурс:openDebuggerConsole(класс Window)
Если это `off', консоль отладчика при запуске закрыта.
Ресурс:openSourceWindow(класс Window)
Если это `off', окно исходного кода при запуске закрыто.
См. раздел 2.1.2 Ключи DDD, как установить эти ресурсы из командной строки при запуске
DDD.
Если это `on' (по умолчанию), пункты всплывающих меню истории
значений отсортированы по алфавиту. Если это `off', выше
появляются недавно использованные значения.
Если вы часто переключаетесь между DDD и другими многооконными
приложениями, вы можете захотеть установить `Edit =>
Preferences => General => Iconify all windows at once'.
Тогда все окна DDD сворачиваются и разворачиваются вместе.
Это привязано к такому ресурсу:
Ресурс:groupIconify(класс GroupIconify)
Если это `on', при сворачивании (разворачивании) любого окна DDD
все остальные окна DDD также сворачиваются (разворачиваются). По
умолчанию `off', это означает, что окна DDD можно сворачивать по
отдельности.
Если вы хотите убирать DDD с рабочего стола во время долгих
вычислений, вы можете установить `Edit => Preferences
=> General => Uniconify when ready'. Тогда можно будет
свернуть DDD на время, пока он занят выполнением команды (например,
прогоном программы); DDD автоматически развернется, когда станет
готов принимать другие команды (например, после того, как отлаживаемая
программа достигнет точки останова). См. раздел 6.4 Остановы программы,
обсуждение этой темы.
Если это `on' (по умолчанию), окна DDD автоматически
разворачиваются, когда GDB готов принимать команды. При этом вы
можете свернуть DDD во время какой-то долгой операции, и он сам
автоматически развернется, когда программа остановится. Установка этого
ресурса в значение `off' оставляет все окна DDD свернутыми.
Вы можете изменить буквально любую метку, цвет, привязку клавиши и так
далее, изменяя ресурсы из файла `Ddd', который поставляется с
дистрибутивом исходного кода DDD. Это работает так:
Найдите нужный ресурс в файле `Ddd'.
Скопируйте строку этого ресурса в ваш файл `~/.ddd/init' и
измените ее по своему вкусу.
Вы можете изменить внутренние установки для большинства подчиненных
отладчиков с помощью `Edit => Settings'. Используя редактор
установок, можно определить, следует ли приводить к обычному виду имена
в Си++, сколько элементов массива нужно печатать и так далее.
Возможности редактора установок зависят от возможностей вашего
подчиненного отладчика. Щелчок на `?' даст объяснение отдельных
пунктов; более подробные сведения можно найти в документации на GDB.
Для отмены изменений используйте `Edit => Undo'. Щелчок на
`Reset' восстанавливает последние сохраненные установки.
Некоторые установки отладчика нечувствительны, и их нельзя изменить,
поскольку это подвергло бы опасности работоспособность DDD. Для
получения подробностей смотрите описания ресурсов `gdbInitCommands'
и `dbxInitCommands'.
Все установки отладчика (кроме путей исходных и объектных файлов)
сохраняются вместе с параметрами DDD.