本篇主要讲述了怎么用VS2010追PostgreSQL源码的过程。使用的VS版本是VS 2010英文专业版,PG的版本是postgresql 9.2.2。
首先第一步就是要安装编译好的PostgreSQL(见VS2010编译PostgreSQL 9.2.2)。打开黑DOS窗口(运行->cmd),切换到源文件目录postgresql-9.2.2\src\tools\msvc,之后输入命令install 目标目录。目标目录是数据库将要安装的地址,用户自行选定。如下图所示:
运行该命令后会提示Installation complete。这时已用编译好的PG安装成功,在目标目录中将会出现如下目录:
第二步就是初始化数据库。切换到安装目录的bin文件夹下,执行命令initdb 数据库存放的目录。如下图所示:
之后运行命令,数据库会自行进行初始化,初始化后如下图所示:
这里给出如何使用命令的提示,之后按照命令提示输入postgres -D E:/PG/PG/mydb启动服务进程,这时会出现如下图所示的状况,表示服务器端的进程已处于监听状态。
为了使能够调试安装好PG,需要在VS中配置一下,右键postgres工程,点击属性,如下图所示:
在弹出来的对话框中进行如下配置:
其中Command一栏中是想要绑定PG的postgres.exe;Command Arguments一栏填写的是-D 数据库的目录名(注意D要大写,否则有时候可能会报错);Working Directory一栏填写的是数据库所在目录。
第三步,创建一个数据库,系统本身进行初始化后含有三个数据库。现新创建一个数据库切换到数据库安装目录的bin文件夹下并执行命令
创建出一个test的数据库。这时打开VS,找到菜单栏中Tools->Attach to Process选项。看到现在应该是有6个postgres.exe的进程,注意记录一下这六个进程的ID。命令窗口切换到数据库安装目录的bin文件夹并执行命令psql 刚刚创建的数据库名称,并显示下面的结果就说明已经进入创建的数据库中,如下图所示:
这时再看VS的Attach to Process中应该有7个postgres.exe的进程和一个psql.exe的进程,如下图所示:
接下来就是attach之前没有出现过的postgres.exe的进程。到这里就算大功快要告成了。
第四步,设置断点。在VS找到postgres工程中的postgres.c文件(这个是psql命令的入口地方),搜索一下simple,就会看到一个大的switch语句,加个断点,如下图所示:
只时候在客户端的那个命令窗口输入命令的时候就会被VS捕获到可以逐步进行追代码了,至于断点的位置就自行添加了。
现在输入一个命令试一下,如输入\dt的命令,如下图所示:
命令完成后就会跳转到VS中设置断点的位置。
用VS2010追PostgreSQL源码这一讲的过程就到此结束了,欢迎大家进行补充。
来源:oschina
链接:https://my.oschina.net/u/264813/blog/111721