Поведение Emacs GDB ReRun

Я бы хотел, чтобы команда gdb в программе X вместо этого переключилась на существующий сеанс отладки X, если он уже существует, вместо того, чтобы сигнализировать об ошибке «Эта программа уже отлаживается» в gud-common-init.

Я считаю, что это важно, поскольку оно заставляет поведение gdb гармонизировать с стандартным поведением большинства других взаимодействий Emacs, таких как, find-file, switch-to-buffer и т. Д., Таким образом создавая меньше путаница для пользователя.

Пока что я изменил строку, содержащую

(error "This program is already being debugged"))

вместо этого делать

(message "This program is already being debugged")

по крайней мере, чтобы предотвратить возникновение ошибки. Однако функция gdb выполняет некоторые дополнительные инициализации, которые не требуются, что вызывает ненужные задержки. Это задача или я пропустил какую-то функцию gud / gdb, которая уже делает это?

Заранее большое спасибо, Per Nordlöw


person Nordlöw    schedule 06.05.2011    source источник
comment
Пожалуйста, рассмотрите возможность подачи запроса на улучшение через M-x report-emacs-bug.   -  person Drew    schedule 03.01.2012


Ответы (1)


Вы всегда можете переименовать-buffer. Вот как я могу запускать несколько сеансов gdb для одного и того же исполняемого файла. Это не происходит автоматически, но это эффективный способ обхода.

Например, если мой исполняемый файл называется pump, то при запуске gdb будет создан буфер с именем * gud-pump *, который представляет сеанс gdb. Из этого буфера выполните meta-x rename-buffer * gud-pump1 *

Затем снова вызовите gdb, и у вас будет два сеанса GUD, один * gud-pump * и * gud-pump1 *. Сеансы разделены и не должны мешать (хотя могут взаимодействовать) друг с другом.

person lcollado    schedule 20.07.2012