门户网站建设工作领导小组,领取流量网站,12333社保查询网官网,优质高等职业院校建设网站准备工作本文目标是可以从 WindowsVSCode 环境远程访问 Linux 的 mysql源码, 以及执行 GDB 远程调试首先准备以下软件在本地机器上:安装VS Code目前最新版本支持 Remote - Development 插件安装 VSCode 扩展 “Remote - Development”, 方法是左下角管理(⚙) -扩展, 直接搜…准备工作本文目标是可以从 WindowsVSCode 环境远程访问 Linux 的 mysql源码, 以及执行 GDB 远程调试首先准备以下软件在本地机器上:安装VS Code目前最新版本支持 Remote - Development 插件安装 VSCode 扩展 “Remote - Development”, 方法是左下角管理(⚙) -扩展, 直接搜索商店安装兼容 OpenSSH 的 SSH 客户端, 我安装的Git for Windows在远程机器上:编译安装mysql(注意编译时需开启-DWITH_DEBUG1)并且启动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_rsassh-keygen -t rsa# 公钥需要放到 Linux 执行环境里# 公钥为 vscode_rsa.pubcat /root/.ssh/vscode_rsa.pub /root/.ssh/authorized_keyschmod 644 /root/.ssh/authorized_keys# 私钥放在 VSCode 一端 Windows 机器里# 我的路径是 D:/dba/vscode_rsa然后在 VSCode 主界面ctrlshiftp 选Remote.SSH: Open Configuration File, 输入以下内容:Host vm-mysql HostName 192.168.126.128 User rootIdentityFile D:/dba/vscode_rsa 在 VSCode 主界面ctrlshiftp 选Remote.SSH: Connect to host, 输入root, 成功后界面左下角会有SSH: 的已连接状态, 同时这个 VSCode 也变成了该远程连接的专属实例,图示通过 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 --usermysql(注意这个代码我执行成功了后面的mysql参数是我根据参考文章猜测写的这里是指定了mysql配置文件以及启动用户和mysql实例启动时的一致没有仔细查阅gdbserver命令行用法欢迎指正。顺便贴下我mysql的启动命令方便读者佐证/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf --initialize --usermysql --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编译后的启动程序之后就可以使用调试功能了, 添加断点, 监视等等, 如图:图示远程 gdb 调试在 VSCode 的调试控制台输入变量名, 就可以直接打印出来, 想使用默认的调试器命令要在前面加-exec, 如-exec p/x args附 gdbserver usagegdbserver --helpUsage: gdbserver [OPTIONS] COMM PROG [ARGS ...]gdbserver [OPTIONS] --attach COMM PIDgdbserver [OPTIONS] --multi COMMCOMM may either be a tty device (for serial debugging), orHOST: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 .参考线程简介和MySQL调试环境搭建(这篇是八怪在知数堂发布的 深入理解mysql主从原理的29讲 一个收费课程30多块很划算想深入学习这块的可以买下)