本文主要介绍如何通过window或者macos远程调试虚拟机的postges源码
安装调试版postgres13,此处忽略
yum install gdb
yum install gdb-gdbserver
VSCode 的官方扩展“Remote Development” 可以直接走 ssh 协议访问远程文件,输fn+f1(macos):
首次连接会多次要求输入密码, 成功后界面左下角会有 SSH: 的已连接状态, 同时这个 VSCode 也变成了该远程连接的专属实例.
选择要打开的远程程序的文件(虚拟机)
连接成功后,后让你选择远程机器源码对应的文件夹
在 VSCode机器上, 进入菜单 调试 -> 添加配置, 会生成一个配置文件 SSH之后的项目根目录/.vscode/launch.json, 将其修改如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "gdb Remote Launch",
"type": "cppdbg",
"request": "launch",
"program": "/pg13/bin/postmaster",
"args": [],
"stopAtEntry": true,
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"miDebuggerArgs": "gdb",
"linux": {
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"miDebuggerServerAddress": "172.16.1.6:2333",
},
"logging": {
"moduleLoad": false,
"engineLogging": false,
"trace": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"cwd": "${workspaceFolder}",
}
]
}
几个注意的地方:
注意:这个文件/postgres-REL_13_2/.vscode/launch.json,会被卸载远程的要调试的源码文件的位置
postgres=# select pg_backend_pid();
pg_backend_pid
----------------
70663
(1 row)
[pg13@sdw2 bin]$ gdbserver :2333 --attach 70663
Attached; pid = 70663
Listening on port 2333
postgres=# select count(1) from t_pub;
....卡主
参考:https://warmgrid.github.io/2019/05/21/remote-debug-in-vscode-insiders.html