求助:Emacs里键盘绑定gdb命令怎么无效?(已解决,勿入!)
发表于 : 2010-09-03 12:26
Ubuntu10.04,emacs23.1,我想把gdb里单步执行的一些命令在emacs里绑定成一个键,参考http://emacser.com/emacs-gdb.htm里,如下
可以看到,我还把F9绑定为编译,F10绑定为调试,这两个都能用,但是当gdb已经停在我设的断点上时,按F6,F7,F8结果都是"<F6> is undefined"之类的提示,直接按C-x C-a C-s等命令是正常的。请问是定制的时侯哪里错了吗?谢谢。
我想把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)