Pages

Friday, April 13, 2007

cgdb - curses gdb

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

編譯後的程式非常小,執行後會將畫面切一半:上面是 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 等等資訊,應該會更方便一些。


This article was originally posted on this site.

No comments:

Post a Comment