vi/vim使用進階: 在VIM中使用GDB調試 – 使用pyclewn

來源:互聯網
上載者:User

轉自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 factorbreak 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

[參考文檔]

  • vim協助檔案
  • vim中文手冊
  • Pyclewn
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.