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.

È stato utile?

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)
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top