初步尝试调试postgresql源码

准备用VS2005和postgresql 8.x或9.0,搭建源码调试环境;

不成功;结果如下;

初步尝试调试postgresql源码_第1张图片

把下面文件中用#连着注释掉7行,然后加上一句 $self->{vcver} = '8.00'; 得到上面结果;如果不改的话上面的结果也没有;

初步尝试调试postgresql源码_第2张图片 

根据资料,需要从源码构建出VS的解决方案和项目,同时由此源码生成debug版的数据库可执行文件,用可执行文件来安装出数据库软件,然后启动数据库,VS打开解决方案,附加到进程来调试;

看一下经过前面的操作,生成了VS的项目和解决方案文件;没有构建出数据库的可执行文件;

初步尝试调试postgresql源码_第3张图片

 

看下如果用VS打开上面解决方案,100多个项目, 

初步尝试调试postgresql源码_第4张图片 

能不能生成数据库的可执行文件;生成一下解决方案,多数项目成功,有一部分失败,

初步尝试调试postgresql源码_第5张图片

看一下一些主要的exe是有了的,

初步尝试调试postgresql源码_第6张图片 

debug目录下多数要生成的exe生成了,

初步尝试调试postgresql源码_第7张图片 

createdb也有,

初步尝试调试postgresql源码_第8张图片 

不知道直接从VS里启动调试能不能调试,源码太多,不知道在哪儿下断点;根据资料,很多操作都会经过postgres.c中的一些行,

初步尝试调试postgresql源码_第9张图片 

在下图函数下一个断点,

初步尝试调试postgresql源码_第10张图片 

启动调试;弹出一个postgres.exe的cmd,又出现下图的错误,不明所以,

初步尝试调试postgresql源码_第11张图片 

根据资料,有了debug版本的数据库可执行文件,然后进行安装数据库;安装好以后,比如安装到 E:\pgdb目录,那么进入E:\pgdb\bin,然后执行下面三步操作,

    initdb -D ../data,这一步是手动初始化数据库。
    输入:pg_ctl start -l logfile -D ../data,这一步是启动初始化完成的数据库,并且把日志记录在logfile文件中。
    输入:psql -d postgres,

这样启动起数据库,然后附加到相关进程,就可以调试源码;

看一下只用生成的基本的几个exe,能不能调试基本进程;新建目录如下,

初步尝试调试postgresql源码_第12张图片 

把前面三个步骤的exe拷过来,

初步尝试调试postgresql源码_第13张图片 

然后执行命令看下,如果启动了基本进程,看能否调试;执行第一条命令,提示还需要其他文件,

初步尝试调试postgresql源码_第14张图片 

从前面生成的debug目录下拷贝过来,再执行 initdb ;

初步尝试调试postgresql源码_第15张图片 

提示还需要更多的文件;逐一拷贝过来;新建share目录,拷了这么多文件过来,

初步尝试调试postgresql源码_第16张图片 

 当提示,

initdb: file "W:/pgdb/share/conversion_create.sql" does not exist

conversion_create.sql 这个文件就找不到,可能是没有生成;

看样子这样行不通;

你可能感兴趣的:(数据库,VC++,postgresql,数据库,initdb)