《emacs常用配置整理及使用》第6條的配置了使用gcc/g++編譯的快速鍵,如下:
(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))))