clion怎么调试postgresql呢?

clion使用cmake去编译项目的,但是大家编译postgresql用的是make。虽然项目中也有CMakeLists.txt文件,但是cmake会报错,因此我们要修改使用cmake调用make去做编译,就好像在java中用maven调用ant编译一样。

安装步骤

  1. 把源码从git上clone下来
  2. 安装依赖库:readline、bison和flex等
  3. 运行
sh configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug

把其中的$HOME/project改成你想安装postgresql的目录

  1. 运行make
  2. 运行make install
  3. 使用initdb初始化数据库,指定数据目录
  4. 使用Clion导入postgresql源码
  5. 修改CMakeLists.txt,内容如下(如果没有,可以直接创建,并将下放内容复制进去
cmake_minimum_required(VERSION 3.6)
project(postgres) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") add_custom_target(postgres COMMAND make -C ${postgres_SOURCE_DIR})
  1. 打开debug configuration,增加一个Application,Target选postgres,Executable选择到源码目录的src/backend/postgres,程序参数写 -D 数据目录

然后就可以愉快的调试代码了,主函数在src/backend/main/main.c

调试过程中,发现断点乱跳,而且在Eclipse/CDT中查看部分变量的值的时候,出现optimized字样。怀疑是编译过程中的优化导致的,为此需要关闭gcc优化选项。

在https://wiki.postgresql.org/wiki/Developer_FAQ文章中也提到关闭优化开关,实践下来,configure的参数如下:

./configure --prefix=%your project path% --enable-depend --enable-cassert --enable-debug CFLAGS="-ggdb -O0"

 

目前看来貌似解决了断点乱跳的问题

 
 

clion调试postgresql的更多相关文章

  1. cgdb调试postgresql

    之前一直用gdb调试代码,最近在搞pg的时候用了一个cgdb,体验很好,调试pg代码的时候真的很方便. 本文主要讲解在进行pg内核开发的时候,如何搭建一个环境,用cgdb方便快捷的调试postgres ...

  2. Linux+eclipse+gdb调试postgresql源码

    pg内核源码解析课上用的vs调试pg源码, VS用起来确实方便,但是配置调试环境着实有点麻烦.首先得装个windows系统,最好是xp,win7稍微麻烦点:最好使用vs05,08和10也可以,但是比0 ...

  3. 怎么样使用CLion调试分析MySQL Server

    由于在写MySQL日志订阅服务时候,需要确定在什么event之后保存position,所以就开始研究MySQL的源码,刚开始采用最原始的打印输出的方式去调试,然后每次改完编译运行,效率好低,让我很绝望 ...

  4. Clion调试ROS包

    1. 安装 从官网下载最新版本的Clion https://www.jetbrains.com/clion/ 并解压到指定的目录,例如: /home/xkc/software/clion-2017.2 ...

  5. windows下源码安装调试postgresql

    环境:windows 10 postgresql版本:postgresql-9.6.5 使用工具:vs2017社区版 辅助工具:perl.diff.flex.bison 相关工具下载地址: perl下 ...

  6. [原创]在Windows和Linux中搭建PostgreSQL源码调试环境

    张文升http://ode.cnblogs.comEmail:wensheng.zhang#foxmail.com 配图太多,完整pdf下载请点这里 本文使用Xming.Putty和VMWare几款工 ...

  7. postgresql编译安装与调试(二)

    接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...

  8. postgresql编译安装与调试(一)

    因为最近组里的项目和postgresql有关,并且需要查看和调试源码,所以专门学习了一下如何安装和调试postgresql,此博文用来记录自己的安装和调试过程.安装环境是CentOS6(CentOS7 ...

  9. 用eclipse开发和调试postgresql-8.4.1

    按照书本<PostgreSQL数据库内核分析>根据第一章讲解的linux下,编译 安装:不同的是libreadline5-dev版本没有了,就用新的版本代替:我的ubuntu 14 所以必 ...

随机推荐

  1. C/C++中volatile关键字详解

    1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier.这是 BS 在 "The ...

  2. STL之vector容器详解

    vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...

  3. sql语句创建数据表

    unsigned 数值类型 无符号化 AUTO_INCREMENT 自增长 PRIMARY KEY 唯一主键 COMMENT 备注信息 BIT 类型只有1和0两个值 enum 枚举数值类型 UNIQU ...

  4. Oracle授权

    给连接权限 grant connect to 用户; 给资源权限 grant resource to 用户; 给DBA权限 grant dba to 用户; 授权语句 --select * from ...

  5. Go学习之旅

    备忘这个 官方文档 https://go-zh.org/doc/ Go指南 https://tour.go-zh.org/welcome/1 Go语言圣经 https://yar999.gitbook ...

  6. centos7安装mariadb

    ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 1.官方um安装mariadb 1).准备官方yum [mariadb ...

  7. 数独计算(C#)

    计算零到多个可能的数独结果,并打印到Console中. 调用方法 MainController mc = new MainController(); mc.Do(); 输入 数独数据 类型为int[, ...

  8. web项目中对post请求乱码处理

    <filter> <filter-name>characterEncoding</filter-name> <filter-class>org.spri ...

  9. Django积木块三——静态文件和上传文件

    静态文件和上传的文件 # 静态文件 STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) # ...

  10. Python学习过程中各个难点---数据类型篇

    ---恢复内容开始--- 当时在学习python的基本数据类型时,对于可变与不可变类型不是了解的很透彻,这篇是回过头来自己的一些理解. 可变的数据类型有列表,不可变的数据类型有字符串,数字和元组   ...