使用clewn调试

来源:互联网 发布:windows xp embedded 编辑:程序博客网 时间:2024/05/21 07:54

 

使用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

 

原创粉丝点击