在LINUX环境下阅读源代码,比较流行的方法是:vim + ctags,而且可以很方便的调试代码,但比较麻烦的是,需要结合个人习惯配置vim,对于大多数人来讲,使用起来通常很不习惯。在WINDOWS下,有很强大的代码阅读工具:source insight,但是不便于调试。因此,本文讲解如何结合WINDOWS和LINUX的优势,边调试边阅读PG源码。
1. 需要的工具
source insight:在WINDOWS下阅读源码;GDB(LINUX环境,安装虚拟机):在LINUX下调试源码;xshell:在WINDOWS下连接LINUX控制台,便于看代码和调试代码时进行切换。
其中前面两个工具是必须的,xshell只是为了方便阅读,当然,每个人的习惯不一样,也可以不需要。
2. 阅读环境的安装过程
第一步:在WINDOWS上安装虚拟机(VMware或virtual box都可以),并在虚拟机中安装LINUX系统(fedora,ubuntu, ....)。在安装linux系统时,注意选择编程环境,一定要安装gcc和gdb。第二步:在linux系统中用源码编译安装PostgreSQL。PG源码可在http://www.postgresql.org/下载;配置安装选项时,安装目录可以指定为/usr/local/pgsql,并且要选择可调试模式安装。第三步:在windows上安装source insight,并导入PostgreSQL源码。第四步:在windows上安装xshell,并连接linux的控制台。
3. GDB的常用调试命令
break 设置断点,常用使用方法如下:
break 行号break 函数名称break 行号/函数名称 if 条件clear 删除设置在指定行号或函数上的断点print 打印变量或表达式的值list 列出程序代码next 单步执行,不进入所调用的函数内部step 单步执行,进入所调用的函数内部continue 执行到下一个断点whatis 查看变量或函数类型watch 在程序中设置观测点,如果数据改变,将给出变化前后的情况info break 查看断点信息quit 退出
更丰富的命令参考gdb官方文档
4. 如何边调试边阅读
-psql -l 查看所有数据库
-psql XXX 进入数据库后台
-select pg_backend_pid(); 查看当前连接的进程号
-gdb -p XXXX (进程号) 用gdb挂载进程并调试