我想把gud-next绑定为F6,gud-step绑定为F7,gud-finish绑定为F8,在~/.emacs里加入如下内容:4.3 单步执行、运行到光标处
在调试中最常用的功能就是单步执行了。单步执行有两种:将函数调用作为一条语句执行(Next)和遇到函数时进入函数中进行调试(Step)。
要使用第一种方式,默认快捷键是C-x C-a C-n,对应命令为gud-next。也可以单击工具栏上的 。
第二种方式的默认快捷键是C-x C-a C-s,对应命令为gud-step。也可以单击工具栏上的 。
如果想跳出当前函数,可以使用命令gud-finish,默认快捷键为C-x C-a C-f,工具栏上有 可用。
在Emacs中还可以运行到光标所在的行。使用命令gud-until即可,默认快捷键为C-x C-a C-u。1
也可以直接把当前语句指示器拖到任意一行,程序会运行到那一行再停下来。
代码: 全选
;;C/C++语言编辑策略**********
(defun my-c-mode-common-hook()
(setq tab-width 4 indent-tabs-mode nil)
;;饥饿删除(hungry-delete)和自动新行
;;(c-toggle-auto-hungry-state 1)
;;按键定义
(define-key c-mode-base-map [(control \`)] 'hs-toggle-hiding)
(define-key c-mode-base-map [(return)] 'newline-and-indent)
(define-key c-mode-base-map [(f9)] 'compile)
(define-key c-mode-base-map [(f10)] 'gdb)
(define-key c-mode-base-map [(meta \`)] 'c-indent-command)
;;gdb键盘绑定
(define-key c-mode-base-map [(f6)] 'gub-next) ;下一语句
(define-key c-mode-base-map [(f7)] 'gub-step) ;进入函数
(define-key c-mode-base-map [(f8)] 'gub-finish) ;跳出当前函数
;;预处理设置
(setq c-macro-shrink-window-flag t)
(setq c-macro-preprocessor "cpp")
(setq c-macro-cppflags " ")
(setq c-macro-prompt-flag t)
(setq hs-minor-mode t)
(setq abbrev-mode t)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)