vscode和gdb调试PG插件
半瓶以上 一瓶未满 人气:0安装vscode
sudo rpm --import http://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=http://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=http://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo' yum check-update sudo yum install code
给vscode安装扩展
C/C++
C/C++ Extension Pack
vscode中gdb调试
打开文件夹(默认创建工作区隐藏文件夹)
打开C/C++文件,光标放在文件内
按F1,输入C/C++,选择C/C++:Edit configuration,生成c_cpp_properties.json配置文件。一般来说不需要更改,若想更好的智能提示,可以在includePath里添加新的目录。例如
"/home/postgres/pgcode/postgres-REL_14_2/src/include", "/home/postgres/pgcode/postgres-REL_14_2/src/include/portability", "/home/postgres/pgcode/postgres-REL_14_2/src/interfaces/libpq"
调试动态库
在本机上调试PG插件citus,citus的源码放在PG源码的contrib中。
在调试,点击“创建 launch.json”,右下角点击“添加配置”,在弹出的窗口选择“C/C++ :(gdb)附加”。
"program": "/home/postgres/pgREL1402/bin/postgres"
调试程序
例如调试pg_dump。
假如在命令行里我们输入如下命令
pg_dump "host=192.168.0.109 port=15431 user=tua password=123 dbname=testddl" -s -t tm
在调试里需要等价成
"program": "/home/postgres/pgREL1402/bin/pg_dump", "args": ["host=192.168.0.109 port=15431 user=tua password=123 dbname=testddl","-s","-t","tm"],
最后点击“开始调试”或者F5进入调试。
识别需要attach的PG进程
在psql命令行里执行东西后,怎样调试呢?需要将gdb附加到对应psql的PG后台进程。可以通过下面语句找出来。
SELECT procpid, start, now() - start AS lap, current_query FROM (SELECT backendid, pg_stat_get_backend_pid(S.backendid) AS procpid, pg_stat_get_backend_activity_start(S.backendid) AS start, pg_stat_get_backend_activity(S.backendid) AS current_query FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS S ) AS S WHERE current_query <> '<IDLE>' ORDER BY lap DESC;
加载全部内容