我希望程序X
上的命令gdb
切换到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
您可以随时重命名缓冲区。这就是我在同一可执行文件上运行多个 gdb 会话的方法。它不是自动的,但它是一种有效的解决方法。
例如,如果我的可执行文件称为 pump,那么在运行 gdb 时,将生成一个名为 *gud-pump* 的缓冲区,它代表 gdb 会话。从这个缓冲区做 meta-x 重命名缓冲区 *gud-pump1*
然后再次调用 gdb,您将有两个 GUD 会话,一个 *gud-pump* 和 *gud-pump1*。这些会话是独立的,不应相互干扰(尽管它们可以交互)。