Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5760898
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2008-05-01 16:46:13

gdb 很強大,但是 list source 的部份感覺上並不是那麼好用;Insight 或 ddd 之類的程式雖然有提供 source list window,可惜我得了不用 就會死的病 (大誤),所以一邊拿自己的生命開玩笑,一邊還是繼續找尋 console 下的解決方案。之前有提到要找找 vim + gdb 的整合方式,找到幾個都很麻煩,我希望盡量不要動到系統本來的程式 (畢竟有些機器不是我的…)。後來從 jserv 的投影片看到 這個好東西,馬上下載試試。

編譯後的程式非常小,執行後會將畫面切一半:上面是 source window,下面是 gdb concole。雖然不是直接跟 vim 整合,不過操作上已經是 vi-like 的 key binding,所以使用上還算是順利,只要先搞清楚 CGDB mode、GDB mode、TTY mode、與 file dialog mode 的切換方式就可以開始玩了。另外,在操作 source window 時也可以設定 shortcut 模式,直接下指令給 gdb,省卻在不同模式間切換的時間,相當貼心的設計。

cgdb 的設定檔放在 ~/.cgdb/cgdbrc,可以將設定放在這邊,我目前的設定如下:

set arrowstyle=highlight
set autosourcereload
set shortcut
set tabstop=4
set winsplit=top_big
hi Statement cterm=bold ctermfg=6
hi PreProc cterm=bold ctermfg=4
hi IncSearch ctermfg=2
hi LineHighlight cterm=bold ctermfg=3 ctermbg=4

不過設完 highlight 才發現一件事,cgdb 的 lexer 不是很完整,所以對於 “#” 後面有空格的 preprocessor directives 判斷會怪怪的。可以修改一下 clexer.l (放在 cgdb/tokenizer/src)

- #{L}+ { return(TOKENIZER_DIRECTIVE); }
+ #[ \t]*{L}+ { return(TOKENIZER_DIRECTIVE); }

這樣看起來會正常一點。

目前這個程式感覺上還很陽春,不曉得能不能整合 watch, register, call stack 等等資訊,應該會更方便一些。

BTW:

When you are in the source window, you are implicitly in "CGDB mode".
All of the below commands are available during this mode.  This mode is
primarily available for the user to view the current source file,
search it, or switch to a different mode.

`ESC'
     Puts the user into command mode. However, you are already in this
     mode.

`i'
     Puts the user into "GDB mode".

`I'
     Puts the user into "TTY mode".

`T'
     Opens a window to give input to the debugged program.

`Ctrl-T'
     Opens a new tty for the debugged program.

阅读(1849) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~