亲宝软件园·资讯

展开

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;

加载全部内容

相关教程
猜你喜欢
用户评论