轉自http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/
===================================================
本節所用命令的協助入口:
:help pyclewn
在前面的文章中介紹了使用vimgdb在vim中偵錯工具,這種方法允許在終端中的vim,以及圖形化的gvim中調試你的程式。不過它的局限也是很明顯的:首先,它需要給vim的原始碼打補丁並重新編譯vim;另外,它只能在Linux下使用,不能在windows上進行gdb調試。
要想在vim中調試,除了使用vimgdb外,還可以使用clewn和pyclewn,這兩個工具也是vimgdb的作者提供的,用法基本相同。區別在於,clewn是使用C語言編寫的,而pyclewn是使用python語言編寫的,具有更好的跨平台能力。本文主要介紹pyclewn工具。
使用pyclewn需要電腦上安裝有python 2.4(或以上版本)以及gvim 7.0或以上版本。需注意的是,pyclewn只能與gvim配合使用,它不支援終端中的vim(clewn也是如此) (update 2011/12/27: 在vim 7.3中,最新的pyclew已經支援終端中的vim調試)。另外,gvim在編譯時間需要使能netbeans_intg特性和autocmd特性。
如果上面的條件都已經滿足,到http://sourceforge.net/projects/pyclewn/下載pyclewn,下載後解壓準備安裝。安裝pyclewn很簡單,在我的電腦上,gvim安裝目錄在我的HOME目錄,因此,也把pyclewn安裝在HOME目錄,使用如下命令:
cd /home/easwy/download/pyclewn-0.7/vimdir=$HOME/.vim python setup.py install --home=$HOME
在pyclewn的源碼目錄中有一個名為INSTALL的檔案,介紹了如何在UNIX以及windows上安裝pyclewn,你可以根據自己的環境決定如何安裝pyclewn。
安裝完pyclewn後,啟動gvim,執行:help pyclewn命令,就可以看到pyclewn的協助檔案,裡面有很多有用的資訊。
下面通過一個例子講解一下如何使用pyclewn進行調試。例子中所調試的程式在這裡下載:偵錯工具下載
首先啟動pyclewn。啟動pyclewn的辦法很簡單,在一個終端中執行下面的命令就可以了:
pyclewn
pyclewn啟動時,它會啟動一個gvim視窗,我們的調試將在這個gvim視窗中進行。運行pyclewn的終端將做為gdb的控制終端,所偵錯工具的輸入輸出都會通過這個終端進行(當然,你也可以在gdb中通過tty命令更改控制終端)。
接下來,我們在pyclewn所開啟的gvim視窗中輸入下面的命令,編譯該程式,開啟要調試的檔案,並在檔案中設定斷點:
:cd pyclewn-ex:make:e main.c:Cfile factorial:Cbreak 14
前面三條命令是標準的vim命令,切換到樣本程式所在目錄,編譯該程式,並開啟檔案main.c。後面兩條命令以大寫字母C做為起始,這是pyclewn自訂的命令,pyclewn將會把字母C後的命令內容傳遞給GDB調試器。所以上面兩條命令相當於在GDB中執行file factor和break 14,載入factor做為被調試的程式,並在main.c的第14行設定一個斷點。
在執行pyclewn自訂的C命令時,pyclewn會在gvim中分隔出一個視窗,用於顯示GDB調試器的輸入輸出。所以,執行完上面命令後,螢幕看起來是這樣的:
點擊查看大圖
在上面已經設定好斷點了,現在就可以開始調試了。pyclewn已經定義了一些調試相關的鍵映射,我們可以通過下面的命令載入這些鍵映射:
:Cmapkeys
執行完這條命令,會在clewn_console中列印出所定義的鍵映射,我在此不再贅述。在下面的調試過程中,我也會使用幾個最常用的映射。
我們繼續調試。我在上面已經定義了一個斷點,所以直接按SHIFT-R鍵運行程式。程式運行到斷點後會停下來,然後我們連按三次CTRL-N,執行三條語句,現在切換到控制終端,可以看到程式在等待輸入,我們輸入一個數字,然後按斷行符號。現在看到的螢幕是這樣的:
點擊查看大圖
在上面的抓圖中,我們把滑鼠移動到變數n上,可以看到彈出了一個小氣泡,顯示變數n的值為4,這和我們輸入的數字是一致的。
接下來再按一次CTRL-N向下執行一個語句,然後再按SHIFT-S步進到函數factorial()中,現在gvim會開啟檔案util/factorial.c。然後用下面的命令,把變數t和i加入到watch視窗中:
:Cdbgvar t:Cdbgvar i
上面的命令會建立一個名為(clewn)_dbgvar的緩衝區,不過此緩衝區並未顯示出來。用下面的命令可以建立一個視窗顯示此緩衝區:
:sb (clewn)_dbgvar
現在螢幕看起來是這樣的:
點擊查看大圖
按一次SHIFT-C使程式運行至結束,我們的調試也就告一段落了。
從上面的調試過程可以看出,使用pyclewn調試很方便。而且,使用pyclewn也可以在windows上進行調試,不過我沒有試過,有興趣的朋友可以試一下。在windows上調試,可能需要使用cygwin中所帶的gdb。
如果覺得pyclewn預設所設定的鍵映射不能滿足自己的需求,也可以自己定義更多GDB調試鍵映射,方法是把pyclewn發行目錄中的.clewn_keys.gdb拷貝到你的HOME目錄,然後修改此檔案定製自己的鍵綁定即可。
cd /home/easwy/download/pyclewn-0.7/cp runtime/.clewn_keys.gdb $HOME
要想瞭解更多關於pyclewn的使用,請閱讀pyclewn的協助手冊::help pyclewn。
[參考文檔]