《
emacs常用配置整理及使用》第6条的配置了使用gcc/g++编译的快捷键,如下:
注意:"gdb --annotate=3 "此处要多加一个空格,以便和后面的参数隔开。
(defun quick-compile ()
"A quick compile funciton for C"
(interactive)
(compile (concat "gcc " (buffer-name (current-buffer)) " -g -pg"))) ;;编译c
(global-set-key [(f5)] 'quick-compile) ;;快捷键F5
其中未指定gcc/g++ -o的输出参数,若想该参数和当前buffer打开的文件名保持一致,可设置如下:
(defun quick-compile ()
"A quick compile funciton for C"
(interactive)
(compile (concat "gcc " (buffer-name (current-buffer)) " -g -pg -o "
(file-name-sans-extension (buffer-name (current-buffer))) ))) ;;编译c
(global-set-key [(f5)] 'quick-compile) ;;快捷键F5
其中(file-name-sans-extension (buffer-name (current-buffer)))为获取当前buffer的文件名(去掉扩展名)
如下图所示:
相应的gdb调试的快捷设置也要修改,如下:
(defun quick-debug ()
"A quick debug funciton for C++"
(interactive)
;;(gdb (concat "gdb --annotate=3" " a.out"))) ;;调试
(gdb (concat "gdb --annotate=3 " (file-name-sans-extension (buffer-name (current-buffer))) ))) ;;调试
(global-set-key [(f6)] 'quick-debug) ;;快捷键F6
注意:"gdb --annotate=3 "此处要多加一个空格,以便和后面的参数隔开。
然后打开要调试的文件,按F6快捷键,gdb会自动加载当前buffer关联的文件,当然也可以在已有的gdb调试窗口中使用如下命令,来加载要调试的文件:
(gdb) file 6.1
显示效果如下:
备注:
如果使用《emacs常用配置整理及使用》所提供的.emacs配置文件,需要做一些修改,注释掉以下配置,否则会导致gdb多窗口调试失败。
;;shell,gdb退出后,自动关闭该buffer
;;(add-hook 'shell-mode-hook 'mode-hook-func)
;;(add-hook 'gdb-mode-hook 'mode-hook-func)
(defun mode-hook-func ()
(set-process-sentinel (get-buffer-process (current-buffer))
#'kill-buffer-on-exit))
(defun kill-buffer-on-exit (process state)
(message "%s" state)
(if (or
(string-match "exited abnormally with code.*" state)
(string-match "finished" state))
(kill-buffer (current-buffer))))