Postgresql 使用Vscode开发指南
depends libraries
sudo apt install -y libsystemd-dev libxml2-dev libssl-dev libicu-dev zlib1g-dev libreadline-dev pkg-config
编译安装
adduser postgres <!-- cd postgresql目录 --> mkdir build mkdir pgsql cd build <!-- --prefix=绝对路径 --> /configure --prefix=/home/postgres/repos/postgresql-15.1/pgsql --with-icu --with-openssl --with-systemd --with-libxml --enable-debug make -j12 make install cd .. mkdir -p pgsql/data chown postgres pgsql/data su - postgres pgsql/bin/initdb -D pgsql/data
前台运行
pgsql/bin/postgres -D pgsql/data
后台运行
pgsql/bin/pg_ctl -D pgsql/data -l logfile start
命令交互工具
pgsql/bin/psql
Vscode 配置文件
.vscode/launch.json
{ "configurations": [ { "name": "Debug PG SRV", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/pgsql/bin/postgres", "args": [ "-D", "pgsql/data" ], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "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 }, { "text": "-gdb-set follow-fork-mode child", "ignoreFailures": true }, { "text": "-gdb-set detach-on-fork on", "ignoreFailures": true } ], "preLaunchTask": "rebuild_db", "miDebuggerPath": "/usr/bin/gdb" }, { "name": "Attach PG SRV", "type": "cppdbg", "request": "attach", "processId": "${command:pickProcess}", "program": "${workspaceFolder}/pgsql/bin/postgres", "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 } ] }, ], "version": "2.0.0" }
.vscode/tasks.json
{ "tasks": [ { "type": "shell", "label": "install_depends", "command": "sudo apt install -y libsystemd-dev libxml2-dev libssl-dev libicu-dev zlib1g-dev libreadline-dev pkg-config", "options": { "cwd": "${workspaceFolder}" }, "detail": "Task install depends." }, { "type": "shell", "label": "build_env", "command": "mkdir build && mkdir -p pgsql/data", "options": { "cwd": "${workspaceFolder}" }, "detail": "Task add folders." }, { "type": "shell", "label": "build_config", "command": "../configure", "args": [ "--prefix=${workspaceFolder}/pgsql", "--with-icu", "--with-openssl", "--with-systemd", "--with-libxml", "--enable-debug" ], "options": { "cwd": "${workspaceFolder}/build" }, "detail": "Task Build MakeFile." }, { "type": "shell", "label": "make", "command": "make", "args": [ "-j12" ], "options": { "cwd": "${workspaceFolder}/build" }, "detail": "Task build." }, { "type": "shell", "label": "make_install", "command": "make", "args": [ "install" ], "options": { "cwd": "${workspaceFolder}/build" }, "detail": "Task install database." }, { "type": "shell", "label": "init_db", "command": "pgsql/bin/initdb", "args": [ "-D", "pgsql/data" ], "options": { "cwd": "${workspaceFolder}" }, "detail": "Task init default database." }, { "type": "shell", "label": "clean_db", "command": "make uninstall && make clean && rm -rf ../pgsql && rm -rf ../build", "options": { "cwd": "${workspaceFolder}/build" }, "detail": "Task clean database." }, { "type": "shell", "label": "build_db_conf", "dependsOn": [ "build_env", "build_config" ], "dependsOrder": "sequence", "detail": "Task add folders." }, { "type": "shell", "label": "build_db", "dependsOn": [ "make", "make_install", "init_db" ], "dependsOrder": "sequence", "detail": "Task add folders." }, { "type": "shell", "label": "rebuild_db", "dependsOn": [ "make", "make_install" ], "dependsOrder": "sequence", "detail": "Task add folders." }, ], "version": "2.0.0" }
安装目录修改必要的配置
pgsql/data/postgresql.conf
listen_addresses = '*'
pgsql/data/pg_hba.conf
host all all 0.0.0.0/0 md5
Vscode 调试操作
F1 选择 “Tasks:Run Task” 继续选择 “build_db_conf”
F1 选择 “Tasks:Run Task” 继续选择 “build_db”
DEBUG 工具栏选择 Debug PG SRV,F5 开始调试postgres主进程
如果要调试其它进程,比如我开启psql交互工具建立一个连接,ps aux 可以看到新增的进程信息,DEBUG 工具栏继续选择 Attach PG SRV,F5 开启调试选择需要调试的进程ID
注意:Vscode 需要使用 postgres 用户登录才行(非ROOT用户,其它用户也行,需要新建用户,需要额外的操作)。