debug PostgreSQL 9.6.18 using Eclipse IDE on CentOS7
debug PostgreSQL 9.6.18 using Eclipse IDE on CentOS7
1.概览
这个文档指导如何在Centos7下,使用Eclipse IDE 调试PostgreSQL
- Linux: CentOS7
- Postgres: postgresql-9.6.18.tar.gz
- Eclipse:eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz
2.建立用户
创建用户组和用户
groupadd postgre
## 提供密码和home路径
useradd -g postgre -d /home/postgre -m postgre -p 你的密码
在/home/postgre
目录中,放置postgresql-9.6.18.tar.gz和eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz。同时,赋予权限。
chown -R postgre:postgre eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz postgresql-9.6.18.tar.gz
3.编译postgre
3.1 解压postgresql
su - postgre
tar zxvf postgresql-9.6.18.tar.gz
3.2 编译
cd postgresql-9.6.18/
./configure --prefix=$HOME/workspace/pg9 --enable-debug CFLAGS='-O0'
通过make
命令,如果你得到了如下信息All of PostgreSQL successfully made. Ready to install.
$ make -j4
其中-j4
,代表中启动4个进程任务,并发make,减少时间。
4.启动Eclipse
创建workspace目录
mkdir -p $HOME/workspace/pg9
解压eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz目录。开启eclipse
# ./eclipse
OpenJDK 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
导入工程。选择[Existing Code as Makfile Porject]
使用eclipse进行make install
安装。
看到,有下面的选项卡,双击[install]。
最后在cd /home/postgre/workspace/pg9/
目录中,有安装之后的各种文件。
[postgre@localhost ~]$ cd /home/postgre/workspace/pg9/
[postgre@localhost pg9]$ ls -l
总用量 16
drwxr-xr-x 2 root root 4096 6月 21 15:32 bin
drwxr-xr-x 4 root root 4096 6月 21 15:32 include
drwxr-xr-x 4 root root 4096 6月 21 15:32 lib
drwxr-xr-x 3 root root 4096 6月 21 15:32 share
5.设置环境变量&&初始化
设置环境变量:
$ export PATH=$HOME/workspace/pg9/bin:$PATH
$ mkdir -p $HOME/pg9data/data/
$ export PGDATA=$HOME/pg9data/data/
初始化数据库:
$ initdb -D $HOME/pg9data/data/ -U postgre -W
启动服务:
$ pg_ctl -D $HOME/pg9data/data/ -l logfile start
查看服务
[postgre@localhost ~]$ ps -ef |grep postgres
postgre 7140 1 0 15:39 pts/0 00:00:00 /home/postgre/workspace/pg9/bin/postgres -D /home/postgre/pg9data/data
postgre 7142 7140 0 15:39 ? 00:00:00 postgres: checkpointer process
postgre 7143 7140 0 15:39 ? 00:00:00 postgres: writer process
postgre 7144 7140 0 15:39 ? 00:00:00 postgres: wal writer process
postgre 7145 7140 0 15:39 ? 00:00:00 postgres: autovacuum launcher process
postgre 7146 7140 0 15:39 ? 00:00:00 postgres: stats collector process
postgre 7152 15393 0 15:39 pts/0 00:00:00 grep --color=auto postgres
6.连接pg和获取进程
创建zsddb数据库
[postgre@localhost ~]$ createdb zsddb
[postgre@localhost ~]$ psql zsddb
psql (9.6.18)
Type "help" for help.
zsddb=#
查看client客户端进程
[postgre@localhost ~]$ ps -ef |grep postgres
postgre 10617 7140 0 16:58 ? 00:00:00 postgres: postgre zsddb [local] idle
从上面可以看到,psql一个客户端的进程连接了上来,pid为10617
。我们可以通过这个进程j进行debug
7.eclipse调试pg
右键postgresql-9.6.18
,选择Debug As
,然后选择Debug Configuration
然后在选择C/C++ Attach Application
,在选择我们编译安装好的/home/postgre/workspace/pg9/bin/postgres
。
然后选择Apply
,再选择Debug
。
后面会弹出一个选择进程的对话框.通过输入postgres
,选择10617
就可以开始debug了。
8.debug数据库pg的一个简单的select语句
postgres=# CREATE TABLE test (id serial PRIMARY KEY, name VARCHAR(20));
CREATE TABLE
postgres=# INSERT INTO test VALUES(1, 'test1');
INSERT 0 1
postgres=# INSERT INTO test VALUES(2, 'test2');
INSERT 0 1
postgres=# SELECT id, name FROM test;
id | name
----+-------
1 | test1
2 | test2
(2 rows)
我们先插入一些语句。
在上述的情况下,我们的如果没有打Breakpoint
的话,我们可以直接顺利执行如上的语句。
现在呢?我们开始做一个断点,如下图:
然后,我们再次进行输入如下语句:
zsddb=# SELECT id, name FROM test;
....现在是hang住的情况,为什么呢,因为我们的代码设置了断点。现在可以通过eclipse进行分析
我们通过使用bt
命令,可以看到后台传输了什么数据,如下我们可以看到query_string指向的是 SELECT id, name FROM test;
语句。
dbname=0x2879c20 "zsddb", username=0x2879c08 "postgre"
可以看到dbname是zsddb,用户是postgre.
可以也知道内存位置是在0x2879c20
.
可以使用F5
进行一步一步看怎么执行的,也可以通过Ctrl+鼠标左键
进入函数里面。看里面干什么。
到此,我们可以看到这种方法,也同样适用于debug MySQL数据库和Redis数据库等。
debug PostgreSQL 9.6.18 using Eclipse IDE on CentOS7的更多相关文章
- 最新 Eclipse IDE下的Spring框架配置及简单实例
前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...
- 定制Eclipse IDE之界面篇
为什么要定制IDE? 在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身.文档.工具.教程等等.工具之中最重要的莫过于开发 ...
- eclipse ide for java ee developers 开发环境搭建(j2ee)
转载自:http://www.iteye.com/topic/982182 真的是一片很不错的文章啊! 使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指 ...
- Maven、gradle、Ant、Eclipse IDE
Maven.gradle.Ant.Eclipse IDE之间的关系 http://wenku.baidu.com/view/d33208810912a21615792910.html?from=sea ...
- 怎么样Eclipse IDE for C/C++ Developers正确编译GTK规划?(解决)
<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 25.99 ...
- eclipse ide for java ee developers 开发环境搭建(J2EE) 【转载】
使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指导,专门讲解了一下Eclipse开发环境的搭建过程, 一是帮助他们尽快的熟悉IDE的使用,二也是保证团队 ...
- Eclipse IDE for Java EE Developers 与 Eclipse Classic(Eclipse Standard)区别
Eclipse下载官网:http://www.eclipse.org/downloads/ 版本: 1.Eclipse classic(Eclipse Standard):Eclipse的标准版; 2 ...
- 定制Eclipse IDE之杂症篇
上文回顾:定制Eclipse IDE之插件篇(二) 该篇将讲述在开发Eclipse 插件过程发生的疑难杂症.不谈功能,只说病症. 前言.拿哪个Eclipse作为定制的基础? 我建议是你用哪个Eclip ...
- 定制Eclipse IDE之插件篇(二)
上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列 ...
随机推荐
- TJA1040
TJA1040是NXP公司推出的一款针对汽车电子行业使用的高性能CAN收发器. TJA1040的第5引脚名称为SPLIT,描述为:稳定共模输出(common-mode stabilization ou ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- Alpha冲刺 —— 个人总结
这几日Alpha冲刺的个人进展汇总,收获满满,我成长了. 我们的团队博客链接,团队作业第五次--Alpha冲刺 4.30 今日进展 改进数据库:字段命名重新规范,在record表中添加confirme ...
- Rocket - diplomacy - NodeImp
https://mp.weixin.qq.com/s/HgUpTCh0D94Uymj5qQk-ag 介绍NodeImp相关基础类的实现. 1. 类图 节点实现(NodeImp ...
- Java实现 蓝桥杯 传纸条
题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个mm行nn列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运 ...
- Java实现 蓝桥杯 历届试题 小计算器
历届试题 小计算器 时间限制:1.0s 内存限制:256.0MB 问题描述 模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个 ...
- Java实现 蓝桥杯 算法提高 Monday-Saturday质因子
试题 算法提高 Monday-Saturday质因子 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 这个问题是个简单的与数论有关的题目,看起来似乎是"求正整数的所有质因子 ...
- Java实现蓝桥杯互补二元组
分三处 1.当差值为0并且只有一个二元组就不管他 2.当差值为0并且二元组个数>=1加上他并减去它本身 3.当差值为存在并且不为0时直接加上他 因为都计算了两次,所以最后ans/2 用了map的 ...
- java实现迷宫问题
迷宫问题 对于走迷宫,人们提出过很多计算机上的解法.深度优先搜索.广度优先搜索是使用最广的方法.生活中,人们更 愿意使用"紧贴墙壁,靠右行走"的简单规则. 58 下面的代码则采用了 ...
- Java实现第十届蓝桥杯不同子串
试题 C: 不同子串 本题总分:10 分 [问题描述] 一个字符串的非空子串是指字符串中长度至少为 1 的连续的一段字符组成 的串.例如,字符串aaab 有非空子串a, b, aa, ab, aaa, ...