vimgdb + gcc

vimgdb 安裝在 Ubuntu 12.04

Step

1. 先安裝

sudo apt-get install build-essential

sudo apt-get build-dep vim-gnome

 

2.

從 http://www.vim.org/sources.php 下載 vim-7.3.tar.bz2 

從 https://github.com/larrupingpig/vimgdb-for-vim7.3 下載 vimgdb-for-vim7.3 (this patch) 

tar xjvf vim-7.3.tar.bz2 -C /tmp

tar xzvf vimgdb-for-vim7.3.tar.gz -C /tmp

cd /tmp

patch -p0 < vimgdb-for-vim7.3/vim73.patch

cd vim73/src

make

sudo make install

cp -rf /tmp/vimgdb-for-vim7.3/vimgdb_runtime/* ~/.vim

 

3.此時已安裝好 vimgdb,進入vim輸入:helptags ~/.vim/doc 產生說明文件

 

vimgdb的使用,參考這篇

:run macros/gdb_mappings.vim "[F7] 使vimgdb快捷鍵生效

:set splitbelow "gdb分割視窗改成在下方出現,預設上方

:set splitright

:set previewheight=50

:vert sp gdb-variables "右方開啟 watch 分割視窗能即時顯示變數的內容,游標上的變數按[v],再按[Ctrl]+[p]加入

輸入createvar <var>指令,將變數加入watch視窗

[Space] 叫出cmd-line視窗,輸入gdb指令,啟動gdb

cd 切換gdb的工作目錄

file <ExeFile> 開啟要 Debug 的執行檔

 

vimgdb常用快捷鍵

[Ctrl]+[b] 設置中斷點

[Ctrl]+[e] 清除中斷點

[Ctrl]+[p] 查看變數內容

[Ctrl]+[x] 查看指標內容

[Ctrl]+[n] next

R (run)

C (continue)

S (step)

Q (quit)

 

vim 整合 gcc,參考這篇

在 vim 中執行 :make 指令會依 makefile 檔進行編譯,若沒有 makefile 檔的話,就依 set makeprg 設定決定。

編譯時,程式碼有錯誤,可以叫出 Quickfix 視窗提示訊息。

:copen 開啟 Quickfix 視窗 = :cw

:cclose 關閉 Quickfix 視窗

:cp 跳到一個錯誤

:cn 跳到一個錯誤

:cl 列出所有的編譯錯誤

:cc 提示訊息在 vim 下方的狀態列

:col 跳到前一個 Quickfix List 視窗

:cnew 跳到後一個 Quickfix List 視窗

 

依附檔名自動選擇Compiler

~/.vimrc

autocmd FileType c set makeprg=gcc\ -Wall\ %\ -o%.out "\表示空格;%表示目前的檔名

~/.vim/ftplugin/c.vim

set makeprg=gcc\ -Wall\ %\ -o%.out

 

設定編譯程式快捷鍵

map <F5> :make<CR>:!./a.out<CR> "設定[F5]快捷鍵為編譯並執行程式,提示訊息會在Quickfix視窗,不在終端機畫面

map <F5> :make && ./a.out<CR> "設定[F5]快捷鍵為編譯並執行程式,提示訊息會在終端機畫面,不在Quickfix視窗

map <F6> :make<CR> "設定[F6]快捷鍵為編譯

 

map <F5> :call MakeAndRun()<CR> "編譯後檢查是否有錯誤,再決定是否執行程式

 1 function! HasError(qflist)
 2     for i in a:qflist
 3         if i.valid == 1
 4             return 1
 5         endif
 6     endfor
 7     return 0
 8 endfunction
 9 
10 function! MakeAndRun()
11     make
12     if HasError( getqflist() )
13         cl
14     else
15         !a.out
16     endif
17 endfunction

 

posted @ 2014-03-31 03:22  a-jay  阅读(258)  评论(0编辑  收藏  举报