pgwater的个人博客分享 http://blog.sciencenet.cn/u/pgwater

博文

vim+gdbvim PostgreSQL 9.1调试环境搭建

已有 7024 次阅读 2011-11-14 20:52 |个人分类:postgres|系统分类:科研笔记| 调试, vim, postgres

鉴于孙鹏孙老师写了两篇有关图形界面下PostgreSQL源码调试环境的搭建博文,为了适合某些特殊人群(控制台+快捷键)的开发方式,本文基于vim + gdbvim + ctags + cscope + quickfix + taglist + omnicppcomplete + Man_api + minibufexplpp,方式简单介绍一下PostgreSQL调试环境。
    调试是一个方面,习惯于这种方式后,以后编写、阅读和分析程序可以使用vim集成化环境,效率还是蛮高的。
    第一步:首先将需要的插件都安装上去,可以参考下面链接      (首先要过这一关,也是最麻烦的一关)
          1.vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb   注意可使用最新的vim7.3版本       

          2.手把手教你把Vim改装成一个IDE编程环境(图文)         需要注意使用的是vim7.3的版本       

          3.拼装的艺术:vim之IDE进化实录                       有内置的帮助手册
         
          根据以上说明,总可以打造自己的一个基于VIM的IDE吧,熟悉其中的插件的快捷键的使用,大致配置起来需要
          半天左右,能够熟练使用大致需要一周左右吧。
    第二步:下载并安装PostgreSQL9.1源代码,其实使用哪个版本调试无所谓,最好使用最新的版本吧
           1.下载源码:
             http://wwwmaster.postgresql.org/download/mirrors-ftp/source/v9.1.1/postgresql-9.1.1.tar.gz
           2.解压缩文件
             进入所下载的压缩文件的目录
             tar xzvf postgresql-9.1.1.tar.gz
             本命令会解压缩postgresql-9.1.1.tar.gz文件,并在当前目录创建目录postgresql-9.1.1
           3.配置源码并生成Makefile
             cd postgresql-9.1.1                        切换到PostgreSQL源代码目录
             ./configure --enable-debug --enable-depend --enable-cassert --prefix=/usr/local/postgresql-9.1.1
             本配置命令,会生成一个Makefile文件,文件中打开调试功能,依赖检测,启用ASSERT宏检测,并且制定了
             PostgreSQL的安装目录为/usr/local/postgresql-9.1.1
           
             如果configure过程中出现错误,请对照,安装相应的模块
           4.修改Makefile.global,使gcc编译器不对PostgreSQL源代码进行优化,否则调试时候局部变量被优化掉了,
             甚至代码执行时候,上面执行一条语句,下面执行一条,又反复的执行上面一条、下面一条,是优化的结果
             vim src/Makefile.global                    编辑Makefile.global,使用其他编辑器也可以
             找到其中的一行,以CFLAG=开头,将后面的 -O2,删除掉,或者修改为-O0,此处修改将来编译代码时,不对
             源代码进行优化处理
          
           5.编译源代码
             make
             make install
           6.配置环境变量
             vim ~/.bashrc
             在文件.bashrc的尾部添加如下信息
             PGDATA=$HOME/data
             PGSQL_HOME=/usr/local/postgresql-9.1.1#与./configure --prefix=/usr/local/postgresql-9.1.1相同             
             LD_LIBRARY_PATH=$PGSQL_HOME/lib
             PATH=$PGSQL_HOME/bin:$PATH:$HOME/bin
             export PATH PGDATA PGSQL_HOME LD_LIBRARY_PATH
    第三步:初始化数据库文件
           cd ~/                   进入本用户主目录
           mkdir data              创建数据库存放位置
           initdb -D data          使用第二步编译生成的可执行程序initdb在~/data目录下创建数据库启动所需文件
    第四步:启动数据库
           postgres postgres       注意还是在用户的主文件夹下键入本命令
    第五步:启动数据库链接的客户端,并且选择服务器生成的为本次链接用得进程pid,调试时候需要用到的
           psql  postgres
           #select pg_backend_pid();
           1234                        数字是数据库后端返回的自己的进程pid
    第六步:生成ctags和cscope索引文件
            切换到PostgreSQL-9.1.1源代码根目录,输入vim命令,打开vim
    第七步:调试前的准备工作
            单击键盘F7键,将vim的键盘映射修改为gdbvim调试时刻的键盘映射
            单击键盘中空格键
            在弹出的窗口中输入: attach  1234                数字与第五步中的pid一致
            单击空格键
            弹出空格中输入y                                 attach之后,gdb需要加载所调试进程的符号表,
                                                            提示是否添加,当然选择y,回车
            单击空格键
            在弹出的窗口中输入: break exec_simple_query     添加一个断点,在exec_simple_query函数中停下来
           
    第八步:为调试发送sql命令
            切换到运行psql的那个窗口,输入以下信息#号是psql的提示符号,可不是我们输入的
            #select amname from pg_am;                       注意“;”,sql语句以分号结尾
   
    第九步:开始调试
            切换到第六步打开的vim窗口
            单击鼠标ctrl+n,单步执行,甚至shift+c,一致执行,直到执行到我们添加过断点的函数exec_simple_query

    第八和第九步骤可以反复使用,可以调试所有的sql语句,可能还要添加更多的断点。
    调试过程中需要,慢慢的熟练ctags和cscope是怎么使用的,还要熟悉gdb的命令。
    最后
        祝大家痛并快乐着!
参考:
1.rhel6+postgresql8.4+postgis1.4+eclipse CDT3.6 调试环境搭建
 
2.postgresql8.4+postgis1.5+eclipse CDT3.6 调试环境搭建
 


https://blog.sciencenet.cn/blog-643407-508018.html

上一篇:曾经的经典libgist v.2.0/amdb v.1.0
下一篇:计算机前辈Dijkstra被采访的视频中,摘录的部分字幕
收藏 IP: 124.16.139.*| 热度|

1 刘洋

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 23:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部