Pregunta

Estoy usando Emacs 24.3.1 para escribir programas (en modo C y C ++).

Después de compilar el búfer actual, me ejecuto por debajo del comando: M-X GUD-GDB.Emacs le da un puntaje como a continuación: GDB - FULLNAME PROG

Sin embargo, a veces el nombre "PROG" no es lo mismo que el nombre ejecutable compilado desde el búfer actual. p.ej.Completé cinco programas PROG1, PROG2, ... PROG5, y actualmente está trabajando en PROG6.Pero M-x GUD-GDB me da GDB - FullName PROG5.(Quiero prog6 en su lugar).

¿Hay alguna manera de corregir esto?Específicamente, "correcto" significa forzar a GUD-GDB para usar el nombre del búfer actual (sin sufijo) como el nombre de PROG.

gracias de antemano.

¿Fue útil?

Solución

Creo que Emacs usa un heurístico (basado en lo que el archivo ejecutable es más reciente o algo así) para descubrir el programa predeterminado para ofrecer.

Si sus preferencias son muy específicas, podría definir y usar esta función:

(defun my-gud-gdb ()
 (interactive)
 (gud-gdb (concat "gdb --fullname "
                  (file-name-sans-extension (buffer-file-name (current-buffer))))))

Esta función ejecutará GDB en un archivo llamado como el archivo que está editando sin extensión.

Otros consejos

gud-query-cmdline acepta filename como un argumento opcional, que aún no se ha servido.

El parche a continuación debe proporcionarlo.

Asegúrese, los permisos de archivos se establecen en ejecutables

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top