目录
  • 安装vscode
  • vscode中gdb调试
    • 调试动态库
    • 调试程序
  • 识别需要attach的PG进程

    安装vscode

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://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;
    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。