使用clewn調試
雖然最近不經常調試C程式了,但覺得vim總應該有一個和gdb串連的方法才稱得上真正的vim。於是,前一段時間一直再找vim串連gdb的方法,結果在google上找到的全是打vimgdb補丁的,需要重新編譯vim,感覺很不爽。前幾天的到一個高人的啟發,試了一下clewn,經過一個多小時,終於大致搞定了,用著還不錯。鑒於很難找到配置clewn的資料,就把方法發上來了,想在vim裡體驗一下gdb而又不想編譯的朋友可以試一下廢話少說,可以現跳到文章末尾看一下效果圖 把vim分成兩個視窗,上半部分顯示代碼,下半部分顯示觀察變數。C-B設定斷點,R是run,S是step,C-J是添加觀察變數。如果覺得有用的話繼續往下看,沒用請點擊[上一頁] 按鈕clewn的首頁: http://clewn.sourceforge.net/ 各種步驟在其首頁上都有詳細說明 懶得看的往下看: 安裝: 大前提:有gvim,也就是vim-gnome, 還有dgb 首先下載原始碼,到他的首頁上很容易找到,注意下載clewn而不是vimgdb。解壓,進入目錄應該都會吧 然後是老一套
代碼:
./configure make sudo make install
注意,安裝clewn依賴readline 缺少的去新立得裡搜一下,libreadline5-dev 或者直接
代碼:
sudo apt-get install libreadline5-dev
安裝好後把相關的.vim檔案複製到~/.vim下參考:
代碼:
cp /usr/local/share/vim/vimfiles/clewn.vim ~/.vim/plugin/
cp /usr/local/share/vim/vimfiles/doc/clewn.txt ~/.vim/doc/ cp /usr/local/share/vim/vimfiles/macros/clewn_mappings.vim ~/.vim/macros/ cp /usr/local/share/vim/vimfiles/syntax/gdbvar.vim ~/.vim/syntax/
注意:以上路徑僅供參考,具體參照你的路徑 然後就搞定了,寫一段程式測試一下:
代碼:
#include <stdio.h> int main(int argc, char *argv[]) { int i; int s; s=0; for( i=0 ; i<10 ; ++i ) { s=s+1; } }
隨便存一個名字,例如test.c 然後:
代碼:
gcc -g -o test test.c
編譯通過後:
代碼:
clewn -va test.c
然後你會看到終端自動開啟了gdb,同時gvim也開啟了。不要急,在終端(gdb)裡輸入:
代碼:
file test
然後就可以在gvim裡調試了可以不用輸入gdb命令,直接在gvim裡操作很方便例如: 用滑鼠點到你想設定斷點的行(用游標移也可以,不過有時設定斷點的時候會不靈),按下
CTRL+B,不靈的話就多按幾下,就設定好斷點了。然後安SHIFT+r(就是R)就run了。當然,程式會在斷點處停止繼續安SHIFT+s(就是S)就step了。如果想看變數的話就在命令模式下輸入:
代碼:
:split
視窗就拆開了。 然後用滑鼠點中想要觀察的變數(用游標移也可以,不過有時會不靈,汗。),按下CTRL+J,就會在另一個視窗裡看到變數了,而且step的時候會自動更新還會高亮顯示的。不靈的話就多按幾次,再不靈的話就直接在終端(gdb)裡輸入
代碼:
createvar yourvar
其中,yourvar是你想要觀察的變數。下面是預設的快速鍵:摘錄自官方文檔
代碼:
List of default key mappings:
CTRL-Z send an interrupt to GDB and the program it is running
B info breakpoints
L info locals
A info args
S step
I stepi
CTRL-N next: next source line, skipping all function calls
X nexti
F finish
R run
Q quit
C continue
W where
CTRL-U up: go up one frame
CTRL-D down: go down one frame cursor position: ~
CTRL-B set a breakpoint on the line where the cursor is located
CTRL-E clear all breakpoints on the line where the cursor is located