2012年2月10日金曜日

[工具使用] quickfix & vimgdb 的使用

1. quickfix

1-1. 使用创建的 Makefile 或 makeprg 命令进行编译
$ vim hello.c
:set makeprg=gcc\ -Wall\ -ohello\ hello.c (空格用 \ 转义)
:make (编译)

1-2. 默认快捷键
:cc   显示详细错误信息 ( :help :cc )
:cp   跳到上一个错误 ( :help :cp )
:cn   跳到下一个错误 ( :help :cn )
:cl   列出所有错误 ( :help :cl )
:cw   如果有错误列表, 则打开quickfix窗口 ( :help :cw )
:col  到前一个旧的错误列表 ( :help :col )
:cnew 到后一个较新的错误列表 ( :help :cnew )

1-3. 自定义快捷键
$ cat ~/vimrc
autocmd FileType c,cpp  map <buffer> <leader><space> :w<cr>:make<cr>
nmap <leader>cn :cn<cr>
nmap <leader>cp :cp<cr>
nmap <leader>cw :cw 10<cr>
--------------------------------------------------------------------------------
2. vimgdb

2-1. 编译安装 vim 和 vimgdb
$ 移动到 vim72 vimgdb 上层目录
$ patch -d vim72 --backup -p0 < vimgdb/vim72.diff
$ cd vim72/src
$ make
$ sudo make install
$ tar zxvf vimgdb_runtime.tgz
$ 复制解压缩后的文件夹或文件到 ~/.vim 路径, 如下
.
|-- doc
|   |-- gdb.txt
|-- macros
|   `-- gdb_mappings.vim
`-- syntax
    |-- gdb.vim
    |-- gdbvar.vim
    `-- gdbvim.vim

$ vim
:helptags ~/.vim/doc
:help vimgdb

2-2. 安装 gdb
$ rpm -qa | grep gdb

2-3. 修改 vimgdb 绑定键

2-3-1. ~/.vim/macros/gdb_mappings.vim
在 nmap <F7> :call <SID>Toggle()<CR> 后添加
" ---------- add start ---------- "
nunmap <F7>
nmap <F4> :call <SID>Toggle()<CR>
" ---------- add end ---------- "

在 let s:gdb_k = 0 后添加
" ---------- add start ---------- "
if ! exists("g:vimgdb_debug_file")
    let g:vimgdb_debug_file = ""
elseif g:vimgdb_debug_file == ""
    call inputsave()
    let g:vimgdb_debug_file = input("File: ", "", "file")
    call inputrestore()
endif
call gdb("file " . g:vimgdb_debug_file)

map <Space> :call gdb("")<CR>
nmap <silent> <C-Z> :call gdb("\032")<CR>
" ---------- add end ---------- "

在 nmap <silent> <C-X> :call gdb("print *" . expand("<cword>"))<CR> 后面添加
" ---------- add start ---------- "
nunmap S
nunmap <C-N>
nunmap F
nunmap R
nunmap C
nmap <silent> <F5> :call gdb("step")<CR>
nmap <silent> <F6> :call gdb("next")<CR>
nmap <silent> <F7> :call gdb("finish")<CR>
nmap <silent> <F8> :call gdb("continue")<CR>
nmap <silent> <F9> :call gdb("run")<CR>
" ---------- add end ---------- "

在 nunmap <C-X> 后添加
" ---------- add start ---------- "
nunmap <F4>
nunmap <F5>
nunmap <F6>
nunmap <F7>
nunmap <F8>
nunmap <F9>
" ---------- add end ---------- "

在 map vimGdb keys 后修改
" ---------- edit start ---------- "
" call s:Toggle()
" ---------- edit end ---------- "

2-3-2. ~/.vimrc (添加)
" ---------- vimgdb settings start ---------- "
map <silent> <F2> :bel 25vsplit gdb-variables<CR>
set splitbelow
set nosplitright
set previewheight=50
let g:vimgdb_debug_file = ""
run macros/gdb_mappings.vim
" ---------- vimgdb settings end ---------- "

3. 使用
3-1. 带参数的程序调试时
<空格>, 在 gdb 命令窗口输入 run 参数1 参数2 的形式来启动程序

0 件のコメント:

コメントを投稿