• ADADADADAD

    windows系统vscode远程调试mysql[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:14:13

    作者:文/会员上传

    简介:

    准备工作本文目标是可以从 Windows VSCode 环境远程访问 Linux 的 mysql源码, 以及执行 GDB 远程调试首先准备以下软件在本地机器上:安装VS Code 目前最新版本支持 Remote -

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    准备工作

    本文目标是可以从 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_rsassh-keygen-trsa#公钥需要放到Linux执行环境里#公钥为"vscode_rsa.pub"cat/root/.ssh/vscode_rsa.pub>>/root/.ssh/authorized_keyschmod644/root/.ssh/authorized_keys#私钥放在VSCode一端Windows机器里#我的路径是"D:/dba/vscode_rsa"

        然后在 VSCode 主界面ctrl+shift+pRemote.SSH: Open Configuration File, 输入以下内容:

        Hostvm-mysql<-连接标识,随便写HostName192.168.126.128<-远程机器IP(我写的装载centos的虚机ip)UserrootIdentityFileD:/dba/vscode_rsa<-私钥的本地完整路径

        在 VSCode 主界面ctrl+shift+pRemote.SSH: Connect to host, 输入root@<ip>, 成功后界面左下角会有SSH: <ip>的已连接状态, 同时这个 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 机器上运行如下代码:

          gdbserverlocalhost: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":"gdbRemoteLaunch","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":"Enablepretty-printingforgdb","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 usage

            gdbserver--helpUsage:gdbserver[OPTIONS]COMMPROG[ARGS...]gdbserver[OPTIONS]--attachCOMMPIDgdbserver[OPTIONS]--multiCOMMCOMMmayeitherbeattydevice(forserialdebugging),orHOST:PORTtolistenforaTCPconnection.Options:--debugEnablegeneraldebuggingoutput.--remote-debugEnableremoteprotocoldebuggingoutput.--versionDisplayversioninformationandexit.--wrapperWRAPPER--RunWRAPPERtostartnewprograms.--onceExitafterthefirstconnectionhasclosed.Reportbugsto"<http://www.gnu.org/software/gdb/bugs/>".
            参考:

            使用 VSCode 远程访问代码以及远程 GDB 调试

            线程简介和MySQL调试环境搭建(这篇是八怪在知数堂发布的 深入理解mysql主从原理的29讲 一个收费课程,30多块很划算想深入学习这块的可以买下)

    windows系统vscode远程调试mysql.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlvscodewindows