Comment personnaliser le nom de l'exécutable lors de l'exécution de gud-gdb
Question
J'utilise emacs 24.3.1 pour écrire des programmes (en mode C et C++).
Après avoir compilé le tampon actuel, j'exécute la commande ci-dessous :M-x gud-gdb.Emacs donne une invite comme ci-dessous :gdb --nom complet programme
Cependant, parfois le nom « prog » n'est pas le même que le nom de l'exécutable compilé à partir du tampon actuel.par exemple.J'ai complété cinq programmes prog1, prog2,...prog5, et travaille actuellement sur prog6.Mais M-x gud-gdb me donne gdb --fullname prog5.(Je veux plutôt prog6.)
Existe-t-il un moyen de corriger cela ?Plus précisément, "correct" signifie forcer gud-gdb à utiliser le nom du tampon actuel (sans suffixe) comme nom du programme.
Merci d'avance.
La solution
Je pense que Emacs utilise une heuristique (basé sur ce que le fichier exécutable est plus récent ou quelque chose comme ça) pour comprendre le programme par défaut à offrir.
Si vos préférences sont très spécifiques, vous pouvez définir et utiliser cette fonction:
(defun my-gud-gdb ()
(interactive)
(gud-gdb (concat "gdb --fullname "
(file-name-sans-extension (buffer-file-name (current-buffer))))))
Cette fonction exécutera GDB sur un fichier nommé comme le fichier que vous modifiez sans extension.
Autres conseils
gud-query-cmdline
accepte filename
comme argument facultatif, qui n'est pas encore servi.
Le patch ci-dessous devrait le fournir.
Assurez-vous que les autorisations de fichiers sont définies sur exécutable
--- 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)