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


9. Изменение программы

DDD предоставляет некоторые базовые средства для редактирования и перекомпиляции исходного кода, а также для наложения заплат на исполняемые файлы и файлы с дампами памяти.

9.1 Редактирование исходного кода

Вы не можете изменять текущий отображаемый файл в самом DDD. Вместо этого DDD позволяет вам вызвать текстовый редактор. Чтобы вызвать текстовый редактор для текущего исходного файла, нажмите кнопку `Edit' или выберите `Source => Edit Source'.

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

После выхода из редактора отображение исходного кода автоматически обновляется.

Если у вас параллельно запущены и DDD, и редактор, вы также можете обновлять исходный код вручную через `Source => Reload Source'. Это перезагружает отображаемый код из исходного файла. Поскольку DDD автоматически перезагружает исходный код при перекомпиляции отлаживаемой программы, ручная перегрузка редко бывает нужна.

9.1.1 Настройка редактирования

Вы можете указать, каким редактором вы предпочитаете пользоваться, через `Edit => Preferences => Helpers => Edit Sources'. С этой установкой связан такой ресурс:

Ресурс: editCommand (класс EditCommand)
Командная строка для вызова редактора для заданного файла. `@LINE@' заменяется на номер строки, а `@FILE@' -- на имя файла. По умолчанию сначала вызывается $XEDITOR, потом $EDITOR, потом vi: Ddd*editCommand: \ ${XEDITOR-false} +@LINE@ @FILE@ || \ xterm -e ${EDITOR-vi} +@LINE@ @FILE@

Ниже показана установка из `~/.ddd/init' для вызова сеанса редактирования в редакторе XEmacs с запущенным gnuserv: Ddd*editCommand: gnuclient +@LINE@ @FILE@

Эта установка из `~/.ddd/init' вызывает сеанс редактирования в редакторе Emacs с запущенным emacsserver: Ddd*editCommand: emacsclient +@LINE@ @FILE@

9.1.2 Редактирование на месте

Это экспериментальный ресурс:

Ресурс: sourceEditing (класс SourceEditing)
Если `on', отображаемый исходный код можно редактировать. Это экспериментальное средство, и оно может исчезнуть в будущих выпусках DDD. По умолчанию `off'.

9.2 Перекомпиляция

Для перекомпиляции исходного кода с помощью make вы можете выбрать `File => Make'. Всплывет диалоговое окно, где вы можете ввести цель Make -- как правило, это имя исполняемого файла. Щелчок на кнопке `Make' вызывает программу make с указанной целью.

Кнопка `Make' на панели команд повторно вызывает make с последними использованными аргументами.

9.3 Наложение заплат

При использовании GDB вы можете открыть исполняемый код вашей программы (и файл с дампом памяти) как для чтения, так и для записи. Это позволяет изменять машинный код, так что вы можете намеренно накладывать заплаты на исполняемый файл вашей программы. Например, вы можете захотеть выставить внутренние отладочные флаги или даже сделать аварийные исправления.

Чтобы наложить заплату на двоичный файл, включите `Edit => GDB Settings => Writing into executable and core files'. Тогда GDB будет открывать исполняемые файлы и дампы памяти и для чтения, и для записи. Если вы уже загрузили файл, вы должны загрузить его снова (с помощью `Edit => Open File' или `Edit => Open Core'), чтобы новая установка возымела силу.

Не забудьте выключить `Writing into executable and core files' как можно скорее, чтобы предотвратить неумышленное изменение машинного кода.


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