windows系统vscode远程调试mysql
发布时间:2022-04-04 10:21 所属栏目:115 来源:互联网
导读:准备工作 本文目标是可以从 Windows VSCode 环境远程访问 Linux 的 mysql源码, 以及执行 GDB 远程调试 首先准备以下软件 在本地机器上: 安装 VS Code 目前最新版本支持 Remote - Development 插件 安装 VSCode 扩展 Remote - Development, 方法是左下角 管理
准备工作 本文目标是可以从 Windows VSCode 环境远程访问 Linux 的 mysql源码, 以及执行 GDB 远程调试 首先准备以下软件 在本地机器上: 安装 VS Code 目前最新版本支持 Remote - Development 插件 安装 VSCode 扩展 “Remote - Development”, 方法是左下角 管理(⚙) -> 扩展, 直接搜索商店 安装兼容 OpenSSH 的 SSH 客户端, 我安装的 Git for Windows 在远程机器上: 编译安装mysql(注意编译时需开启 -DWITH_DEBUG=1),并且启动mysql实例,这里我是在centos(CentOS Linux release 7.7.1908)上面编译安装的mysql8.0.18(为方便没有 mysql编译安装经验的读者回头另写一篇 mysql8.0.18编译安装) 安装 gdb, yum install gdb 安装 gdbserver, yum install gdb-gdbserver 启动 ssh 服务端, 通常默认已经启动 使用 VSCode 远程访问代码 VSCode主界面 查看 -> 扩展 搜索 “Remote - Development” 并安装,安装成功后左边会有个电脑图标 首先改设置, 左下角 管理(⚙) -> 设置, 搜 “remote.SSH”, 勾选 remote.SSH.showLoginTerminal 完后就可以连接到远程机器了, 为避免频繁输入密码建议使用免密ssh登录 首先生成密钥: # 生成一对密钥, 文件名写vscode_rsa ssh-keygen -t rsa # 公钥需要放到 Linux 执行环境里 # 公钥为 "vscode_rsa.pub" cat /root/.ssh/vscode_rsa.pub >> /root/.ssh/authorized_keys chmod 644 /root/.ssh/authorized_keys # 私钥放在 VSCode 一端 Windows 机器里 # 我的路径是 "D:/dba/vscode_rsa" 然后在 VSCode 主界面 ctrl+shift+p 选 Remote.SSH: Open Configuration File, 输入以下内容: Host vm-mysql <- 连接标识, 随便写 HostName 192.168.126.128 <- 远程机器 IP(我写的装载centos的虚机ip) User root IdentityFile D:/dba/vscode_rsa <- 私钥的本地完整路径 在 VSCode 主界面 ctrl+shift+p 选 Remote.SSH: Connect to host, 输入 root@<ip>, 成功后界面左下角会有 SSH: <ip> 的已连接状态, 同时这个 VSCode 也变成了该远程连接的专属实例, windows系统vscode远程调试mysql 图示通过 SSH 连接远程linux机器成功后 然后就可以从侧边栏打开项目路径了, 点击左边的资源管理器,点击打开文件夹,在下图蓝框处输入mysql源码路径(注意不是编译后的运行程序路径是源码解压路径,我的环境源码路径为/home/mysql/rpmbuild/SOURCES/mysql-8.0.18,这里我还向下选择sql目录,因为mysql的大多数核心代码在该目录下,如main函数) 安装一些需要的扩展, 如: C/C++ IntelliSense, debugging, and code browsing 有些扩展是要安装在 SSH 的目标机器上, 安装时会提示你 install on SSH: xxxx, 而主题类扩展和一部分功能类扩展是安装在本地机器上 使用 VSCode 和 gdbserver 远程调试 mysql 代码 在远程 Linux 机器上运行如下代码: gdbserver localhost:2333 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql (注意这个代码我执行成功了,后面的mysql参数是我根据参考文章猜测写的,这里是指定了mysql配置文件以及启动用户和mysql实例启动时的一致,没有仔细查阅gdbserver命令行用法,欢迎指正。顺便贴下我mysql的启动命令方便读者佐证, /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql ) 我vm虚机远程 Linux 机器 IP 是 192.168.126.128, gdbserver 的端口设为 2333, 在 VSCode 机器上, 进入菜单 调试 -> 添加配置, 会生成一个配置文件 SSH之后的项目根目录/.vscode/launch.json, 将其修改如下: { "version": "0.2.0", "configurations": [ { "name": "gdb Remote Launch", "type": "cppdbg", "request": "launch", "program": "/usr/local/mysql/bin/mysqld", "stopAtEntry": true, "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "gdb", "miDebuggerArgs": "gdb", "linux": { "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "miDebuggerServerAddress": "192.168.126.128:2333", }, "logging": { "moduleLoad": false, "engineLogging": false, "trace": false }, "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "cwd": "${workspaceFolder}", } ] } 几个注意的地方: 应该是 "request": "launch", 不是 “attach”, 此后也并不需要记录进程ID 需要填对 "miDebuggerServerAddress": "192.168.126.128:2333", 有这个设置才会开启 gdb 远程调试 "engineLogging": true 可以看到 gdb 自身的详细消息 必须是 "externalConsole": false 否则报错 /usr/local/mysql/bin/mysqld 在 gdbserver 和 launch.json 里都要填一次,即mysql编译后的启动程序 之后就可以使用调试功能了, 添加断点, 监视等等 在 VSCode 的调试控制台输入变量名, 就可以直接打印出来, 想使用默认的调试器命令要在前面加 -exec, 如 -exec p/x args 附 gdbserver usage gdbserver --help Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...] gdbserver [OPTIONS] --attach COMM PID gdbserver [OPTIONS] --multi COMM COMM may either be a tty device (for serial debugging), or HOST:PORT to listen for a TCP connection. Options: --debug Enable general debugging output. --remote-debug Enable remote protocol debugging output. --version Display version information and exit. --wrapper WRAPPER -- Run WRAPPER to start new programs. --once Exit after the first connection has closed. Report bugs to "<http://www.gnu.org/software/gdb/bugs/>". (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读