Come personalizzare il nome eseguibile durante l'esecuzione GUD-GDB
Domanda
Sto usando Emacs 24.3.1 per scrivere programmi (in modalità C e C ++).
Dopo aver compilato il buffer corrente, eseguo il comando sotto: M-X GUD-GDB.Emacs dà un prompt come di seguito: GDB --FullName PROG
Tuttavia, a volte il nome "PROG" non è lo stesso del nome eseguibile compilato dal buffer corrente. per esempio.Ho completato cinque programmi PROG1, PROG2, ... PROG5 e sta attualmente lavorando su PROG6.Ma M-X GUD-GDB mi dà GDB --FullName PROG5.(Voglio invece Prog6.)
C'è un modo per correggere questo?Nello specifico, "corretto" significa forzare GUD-GDB per utilizzare il nome del buffer corrente (senza suffisso) come nome PROG.
Grazie in anticipo.
Soluzione
Penso che Emacs usi un euristico (in base a quale file eseguibile è più recente o qualcosa del genere) per capire il programma predefinito da offrire.
Se le tue preferenze sono molto specifiche puoi definire e utilizzare questa funzione:
(defun my-gud-gdb ()
(interactive)
(gud-gdb (concat "gdb --fullname "
(file-name-sans-extension (buffer-file-name (current-buffer))))))
.
Questa funzione eseguirà GDB su un file denominato come il file che stai modificando senza estensione.
Altri suggerimenti
gud-query-cmdline
accetta filename
come argomento opzionale, che non è ancora servito.
La patch di seguito dovrebbe fornirlo.
Assicurati, le autorizzazioni di file sono impostate su eseguibili
--- gud.el Sun Mar 17 12:52:42 2013
+++ gud.el Tue Jun 3 10:06:11 2014
@@ -716,7 +716,7 @@
"Run gdb on program FILE in buffer *gud-FILE*.
The directory containing FILE becomes the initial working
directory and source-file directory for your debugger."
- (interactive (list (gud-query-cmdline 'gud-gdb)))
+ (interactive (list (gud-query-cmdline 'gud-gdb (and (file-executable-p (buffer-file-name))(buffer-file-name)))))
(when (and gud-comint-buffer
(buffer-name gud-comint-buffer)
.