irpas技术客

Windows下使用VSCode远程debug PostgreSQL_loveoobaby_vscode远程debug

网络投稿 1741

基本思路 远程主机先完成PostgreSQL的编译用psql连接PG,获取到fork出来的子进程PID在psql中执行sql,触发PG中的代码远程用VSCode调试子进程 环境版本说明

PostgreSQL版本:PostgreSQL12.10 远程目标机:CentOS7 本地主机:Windows10

具体步骤 1. 远程主机准备,编译并启动PostgreSQL

以下操作均在root用户下执行。 1. 创建用户postgres

useradd -s /bin/bash -d /home/postgres -m postgres

2. 从PostgreSQL官网下载其源码,并解压要到本地目录

wget https://ftp.postgresql.org/pub/source/v12.10/postgresql-12.10.tar.gz tar -xzvf ./postgresql-12.10.tar.gz cd ./postgresql-12.10

3. 在环境中安装以下软件 yum install readline-devel zlib-devel

4. 运行配置 ./configure --enable-debug --enable-cassert –enable-debug表示开启Debug –enable-cassert表示打开断言检查 其他选项可使用./configure --help查看 5. 将src/Makefile.global文件中的编译优化级别去掉 改之前: CFLAGS = -Wall (…) -fexcess-precision=standard -g -O2 CXXFLAGS = -Wall (…) -g -O2 改之后: CFLAGS = -Wall (…) -fexcess-precision=standard -g CXXFLAGS = -Wall (…) -g

6. 执行构建并安装 make && sudo make install PG将安装安装到/usr/local/pgsql目录下。

6. 为了使用方便将PostgreSQL加入PATH环境变量。将以下字符数写入~/.bashrc或/etc/profile文件中,并刷新环境变量。

export PATH=/usr/local/pgsql/bin:$PATH

7. 创建数据库数据目录,如/home/postgres/pgdata, 并将其拥有者改为postgres

mkdir /home/postgres/pgdata chown postgres:postgres /home/postgres/pgdata

8. 初始化数据库 sudo -u postgres -s /bin/bash -c "/usr/local/pgsql/bin/initdb -D /home/postgres/pgdata" 初始化完之后,目录中会出现大量的文件。

9. 启动postgresql服务 sudo -u postgres -s /bin/bash -c "/usr/local/pgsql/bin/pg_ctl -D /home/postgres/pgdata start"

10. 连接PostgreSQL psql -U postgres

11. 在psql终端中,创建简单的表,并插入简单的数据

create table t1(id integer, name text); insert into t1 values(1, 'name1'); insert into t1 values(2, 'name2');

12. 在psql终端中,查询PostgreSQL子进程的pid select pg_backend_pid(); 请记住子进程的pid,调试的时候会用到。

3. 本地主机准备工作 安装Visual Studio Code,设置远程开发需要的插件,Remote-SSH,C/C++等插件;具体可参考:Windows + VSCode SSH实现远程C/C++开发使用VSCode打开远程主机上Postgre源码,新增.vscode目录,新建launch.json文件,内容如下:{ "version": "0.2.0", "configurations": [ { "name": "postgresql", "type": "cppdbg", "request": "attach", "program": "/usr/local/pgsql/bin/postgres", "processId": "${command:pickProcess}", "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Set Disassembly Flavor to Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] } 4. 启动调试 在本地机器上,进入VSCode的调试面板,启动调试,并选择2.(12)查到的进程号。3. 在本地机器上,查看[Breakpoints],新增断点在任意函数上,如planner4. 在2.12打开的psql终端中,进行简单查询,触发代码的执行,如“select * from t1 where id = 1”。如果你看到PostgreSQL进程停在planner.c中的planner()函数上,那么Debug成功… 5. 参考

[1]. How to do linux debugging PostgreSQL remotely using Visual Studio Code


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #vscode远程debug #1 #xzvf