Это относится как к командам GDB и их выводу, так и к вводу и выводу, производимыми отлаживаемой программой.
Это полезно, потому что вы можете копировать текст предыдущих команд и вводить их снова; вы даже можете использовать таким образом части вывода.
Все средства режима оболочки Emacs доступны для взаимодействия с вашей программой. В частности, вы можете посылать сигналы обычным путем--- например, C-c C-c для прерывания, C-c C-z для остановки.
Каждый раз, когда GDB отображает кадр стека, Emacs автоматически находит исходный файл для него и помещает стрелку (`=>') на левом крае текущей строки. Emacs использует отдельный буфер для отображения исходного текста, и разделяет экран, чтобы отобразить как сеанс GDB, так и исходный текст.
Тем не менее, явные команды GDB list и search производят вывод как обычно, но у вас вероятно не будет причин использовать их из Emacs.
Предупреждение: Если каталог, в котором находится ваша программа, не является текущим, Emacs легко может ошибиться при определении местонахождения исходных файлов; в этом случае вспомогательный буфер с исходным текстом не появляется. GDB может искать программы, используя переменную среды PATH, так что сеансы ввода и вывода происходят нормально; но Emacs не получает достаточно информации от GDB, чтобы найти исходные файлы в такой ситуации. Чтобы избежать этой проблемы, либо запускайте режим GDB из каталога, где находится ваша программа, либо укажите абсолютное имя файла, когда будет запрошен параметр для M-x gdb.
Подобная путаница может возникнуть, если вы используете команду GDB file, чтобы переключиться к отладке программы, находящейся в каком-нибудь другом месте, из существующего буфера GDB в Emacs.
По умолчанию, M-x gdb вызывает программу с именем `gdb'. Если вам нужно вызвать GDB под другим именем (например, если вы храните несколько конфигураций под различными именами), вы можете установить переменную Emacs gdb-command-name; например, установка
(setq gdb-command-name "mygdb")
(которой предшествует M-: или ESC :, или если она введена в буфер *scratch* или в вашем файле `.emacs'), заставит Emacs вызвать программу "mygdb".
В буфере ввода-вывода GDB, вы можете использовать следующие специальные команды Emacs в дополнение к стандартным командам режима оболочки:
В любом исходном файле, команда Emacs C-x SPC (gdb-break) велит GDB установить точку останова на строке исходного текста, в которой находится точка.
Если вы случайно удалите буфер отображения исходного текста, его можно легко вернуть обратно, введя команду f в буфере GDB, чтобы запросить отображение кадра; когда выполнение происходит под управлением Emacs, это при необходимости создает исходный буфер заново, чтобы показать вам текущий кадр.
Исходные файлы, отображаемые в Emacs, находятся в обычных буферах Emacs, которые получают доступ к исходным файлам обычным способом. При желании вы можете редактировать файлы в этих буферах; но помните, что GDB взаимодействует с Emacs в терминах номеров строк. Если вы добавите или удалите строки из текста, известные GDB номера строк больше не будут соответствовать коду.