linux下postgresql数据库debug环境搭建
2012-01-09 21:27
267 查看
1.准备
下载postgresql安装文件,从http://www.postgresql.org/download/下载需要的版本
安装readline(非必须)。
如果需要使用zlib,ssl等则需要先安装zlib,ssl库,不需要使用则可以不安装。
2. 创建用户
groupadd postgres
useradd -g postgres postgres
3.安装
安装什么特别的,就是三板斧 configure,make,make install
我要把pg安装在/data/pg_debug目录下。
./configure --prefix=/data/pg_debug/ CFLAGS="-O0" --without-readline --without-zlib
关于参数可以使用./configure -h查看说明,这里不一一解释。说明下使用的参数含义:
--prefix=/data/pg_debug/ 是将pg安装在/data/pg_debug/ 目录下,如果不指定这个参数的话默认安装在/usr/local/pgsql目录下面
CFLAGS="-O0" 是指gcc编译时不使用优化
--without-readline --without-zlib 不使用readline和zlib库(建议大家安装readline库,这样在命令psql命令行下可以自动不齐,我没有找到对应的版本所以没有安装)。
make
make install
安装就算完成。接下来初始化DB并启动pg:
4。调试源码:
调试使用gdb,我使用的vi+gdb。
使用psql登录pg,并查询进程号:
在另一终端里面使用gdb调试,并在be-secure.c的第305行设置断点:
在psql中:
在gdb中:
要调试其他代码也采用同样的方法了。
下载postgresql安装文件,从http://www.postgresql.org/download/下载需要的版本
安装readline(非必须)。
如果需要使用zlib,ssl等则需要先安装zlib,ssl库,不需要使用则可以不安装。
2. 创建用户
groupadd postgres
useradd -g postgres postgres
3.安装
安装什么特别的,就是三板斧 configure,make,make install
我要把pg安装在/data/pg_debug目录下。
./configure --prefix=/data/pg_debug/ CFLAGS="-O0" --without-readline --without-zlib
关于参数可以使用./configure -h查看说明,这里不一一解释。说明下使用的参数含义:
--prefix=/data/pg_debug/ 是将pg安装在/data/pg_debug/ 目录下,如果不指定这个参数的话默认安装在/usr/local/pgsql目录下面
CFLAGS="-O0" 是指gcc编译时不使用优化
--without-readline --without-zlib 不使用readline和zlib库(建议大家安装readline库,这样在命令psql命令行下可以自动不齐,我没有找到对应的版本所以没有安装)。
make
make install
安装就算完成。接下来初始化DB并启动pg:
localhost:/data/pg_debug # ls bin include lib share
localhost:/data/pg_debug # mkdir data localhost:/data/pg_debug # chown postgres.postgres ./data localhost:/data/pg_debug # su postgres postgres@localhost:/data/pg_debug> /data/pg_debug/bin/initdb -D /data/pg_debug/data/
postgres@localhost:/data/pg_debug> /data/pg_debug/bin/pg_ctl start -D /data/pg_debug/data/ server starting
4。调试源码:
调试使用gdb,我使用的vi+gdb。
使用psql登录pg,并查询进程号:
postgres@localhost:/data/pg_debug> /data/pg_debug/bin/psql psql (9.1rc1) Type "help" for help. postgres=# select pg_backend_pid(); pg_backend_pid ---------------- 21099 (1 row)
在另一终端里面使用gdb调试,并在be-secure.c的第305行设置断点:
localhost:/home/vince # gdb /data/pg_debug/bin/postgres 21099 GNU gdb (GDB) SUSE (7.2-3.3) Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i586-suse-linux". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /data/pg_debug/bin/postgres...done. Attaching to program: /data/pg_debug/bin/postgres, process 21509 Reading symbols from /lib/libdl.so.2...Missing separate debuginfo for /lib/libdl.so.2 Try: zypper install -C "debuginfo(build-id)=785eb60d6a7a2b4828cd93c6738f00065322f20d" (no debugging symbols found)...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /lib/libm.so.6...Missing separate debuginfo for /lib/libm.so.6 Try: zypper install -C "debuginfo(build-id)=f8e95f6424bafd41f505d4a5b113c5100ffa03be" (no debugging symbols found)...done. Loaded symbols for /lib/libm.so.6 Reading symbols from /lib/libc.so.6...Missing separate debuginfo for /lib/libc.so.6 Try: zypper install -C "debuginfo(build-id)=6478c346f66a284b77eb5ca82ab8f2f4f9561600" (no debugging symbols found)...done. Loaded symbols for /lib/libc.so.6 Reading symbols from /lib/ld-linux.so.2...Missing separate debuginfo for /lib/ld-linux.so.2 Try: zypper install -C "debuginfo(build-id)=b6b00f5560b849cf9fac5e6efb9f403c21f508dd" (no debugging symbols found)...done. Loaded symbols for /lib/ld-linux.so.2 0xffffe430 in __kernel_vsyscall ()
(gdb) b be-secure.c:305
在psql中:
postgres=# create table test3(a int);
在gdb中:
(gdb) b be-secure.c:305Breakpoint 1 at 0x81ddb81: file be-secure.c, line 305.
(gdb) c
Continuing.
Breakpoint 1, secure_read (port=0x851f680, ptr=0x84c9280, len=8192) at be-secure.c:305
305 client_read_ended();
(gdb) n
309 }
(gdb) n
pq_recvbuf () at pqcomm.c:819
819 if (r < 0)
(gdb)
要调试其他代码也采用同样的方法了。
相关文章推荐
- linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):
- linux下搭建postgresql、postgis、pg_pathman环境步骤详解
- Linux下搭建PostgreSQL调试环境
- Linux平台下python链接数据库所需环境搭建记录(使用pip)
- Linux与云计算——第二阶段Linux服务器架设 第一十二章:数据库搭建—PostgreSQL
- ubuntu 下搭建一个python3的虚拟环境(用于django配合postgresql数据库开发)
- Debian/Linux下Django + PostgreSQL环境搭建
- linux环境搭建图数据库neo4j
- 搭建基于Linux的Informix数据库开发环境
- postgresql数据库异步流复制hot standby环境搭建
- LINUX下环境下链接oracle 数据库搭建测试环境
- 在Linux虚拟环境下搭建DB2的多分区数据库DPF
- [原创]在Windows和Linux中搭建PostgreSQL源码调试环境
- 重要:Linux下IDE--KDevelop (用来跟踪调试C++) Ubuntu下QT4开发环境的搭建及初体验
- linux下php+nginx+mysql网站开发环境搭建
- Linux环境搭建之Java JDK安装
- Linux下Android开发环境搭建详细步骤
- 搭建OK6410交叉编译环境arm-linux-gcc-4.3.2
- Linux下arm开发环境搭建
- 在Linux环境下单机上实现MySQL5主从数据库同步复制