Clion-Remote GDB调试postgres(本地为windows,远程为centos)
通过Make+Makefile编译,并构建索引
下面一步一步跟着做即可
-
下载源码压缩包、编译postgres的源码:使用Clion调试postgresql源码 - 知乎 (zhihu.com)(系统 用户的配置文件是~/.zshrc)
-
下载源码压缩包、编译postgres的源码:Linux下 PostgreSQL 编译安装_丶破浪的博客-CSDN博客(用户的配置文件是~/.bash_profile)
-
linux上安装gdbserver (例:centos中)
sudo yum install gdb-gdbserver
-
运行gdbserver(先切换postgres用户)指定为1234端口,确保postgres原先是已关闭的状态
su - postgres
gdbserver :1234 /usr/local/pgsql/bin/postgres -D /var/postgresql/data
“/usr/local/pgsql/bin/postgres” 其实就是pg_ctl会调用的可执行程序
-
现在想clion可以识别到本项目中的makefile的话,点击左上角 File -> Settings -> Build, Execution, Deployment -> Makefile
- 在 Toolchain 中选择 Remote Host ,Apply之后,会弹出一个Load Project的窗口去clean project,点击确定,然后clion会花几分钟的时间构建索引,之后便可查阅源码
-
详细可看官网:Remote Debug | CLion Documentation (jetbrains.com)
- clion中打开 Run | Edit Configurations, 点击 +,and select Remote Debug from the list of templates.
- debugger:选之前设置的远程toolchain的GDB
- 'target remote' args:输入 ip:1234
- Path mappings:“Local”输入本地项目的目录,”Remote“输入远程项目的目录
- debug时,可能要等一会儿,连接成功时,clion会打印 Debugger connected to ip:1234
-
开启一个新的终端,切换为用户postgres,然后连接数据库
psql
-
手动关闭postgres
pg_ctl stop -D $PGDATA -m fast
-
手动开启postgres
pg_ctl start -D $PGDATA
-
在Clion中的 "GDB Console"(GDB 控制台)中,使用 GDB 命令发送信号以关闭进程
signal SIGTERM
<zshrc和bash_profile的区别>
~/.zshrc
和 ~/.bash_profile
是用户的配置文件,用于自定义用户的 Shell 环境。它们在不同的操作系统和 Shell 中起着相似的作用。
~/.zshrc
是用于 Zsh Shell 的配置文件,而 ~/.bash_profile
是用于 Bash Shell 的配置文件。它们位于用户的主目录下(~
表示用户的主目录),在用户登录时被加载和执行。
这些配置文件的作用是设置用户的 Shell 环境变量、定义别名、配置命令提示符和加载其他用户自定义的 Shell 脚本等。
</>
<使用CLion查阅内核源码>
linux使用makefile+kconfig的方式描述构建规则,老版本的clion并不支持makefile的工程,只支持cmake工程,这样打开linux源码的目录,无法创建clion的工程,也就无法建立索引,那么代码补全和符号调整都无法工作。
只能通过bear工具,跟踪编译过程,再通过kernel-grok生成CMakeLists.txt,再用clion打开。
但是新版本的clion(2020.2起),正式加入了Makefile工程的支持,也就是说,clion可以直接解析make的构建过程。clion是通过 --just-print
参数(也就是make --just-print
),使make只打印命令,并不进行真正的调用,进而分析make的命令输出,来解析工程的构建描述。
</>
<自动化批处理编译工具>
5分钟理解make/makefile/cmake/nmake - 知乎 (zhihu.com)
</>
Clion-Local GDB调试postgres(本地为windows)
-
(2条消息) PostgreSQL源码学习——win10源码编译安装_postgresql win编译_薛钦亮的博客-CSDN博客(一定要是下载源码安装包再解压,git clone的再perl时会报错)
-
pg数据库成功启动之后,使用psql连接上,并查询postgres的backend的进程号。
select pg_backend_pid();
-
在clion中,点击左上角,选择 "Run" -> "Attach to Process ..." ,查询进程号,然后attach,便可以开始进行gdb调试。