我希望程序 X
上的命令 gdb
切换到 X
的现有调试 session (如果它已经存在)而不是发出信号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 函数?
提前非常感谢, 佩尔·诺德洛夫
最佳答案
您始终可以重命名缓冲区。这就是我如何在同一个可执行文件上运行多个 gdb session 。它不是自动的,但它是一种有效的解决方法。
例如,如果我的可执行文件名为 Pump,那么在运行 gdb 时,将生成一个名为 *gud-pump* 的缓冲区,它代表 gdb session 。从此缓冲区中执行meta-x重命名缓冲区*gud-pump1*
然后再次调用 gdb,您将有两个 GUD session ,一个 *gud-pump* 和 *gud-pump1*。这些 session 是独立的,不应相互干扰(尽管它们可以交互)。
关于debugging - Emacs GDB 重新运行行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5908874/