1、VS2019准备
1、安装vs2019社区版,并确保安装如下两个开发组件:
Visual Studio Tools for CMake
适用于 Linux 开发的 Visual C++
2、启动VS2019,添加远程地址,在“工具->选项->跨平台”页面添加远程服务器信息
3、使用VS2019打开本地源码目录:
4、在“项目->CMake设置”中对远程机器的CMake选项进行配置,具体内容可参考json脚本:
可通过+号增加Linux-Debug设置,并将默认的x64-Debug删除即可,并根据需要调整cmake参数,与编译器参数等。或者直接编辑json文件也可:
{
"configurations": [
{
"name": "Linux-Debug",
"generator": "Unix Makefiles",
"configurationType": "Debug",
"cmakeExecutable": "/usr/bin/cmake",
"remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],
"cmakeCommandArgs": "-DWITH_DEBUG=1",
"buildCommandArgs": "-j4",
"ctestCommandArgs": "",
"inheritEnvironments": [ "linux_x64" ],
"remoteMachineName": "${defaultRemoteMachineName}",
"remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
"remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
"remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
"remoteCopySources": true,
"rsyncCommandArgs": "-t --delete --delete-excluded",
"remoteCopyBuildOutput": false,
"remoteCopySourcesMethod": "rsync",
"addressSanitizerRuntimeFlags": "detect_leaks=0",
"variables": []
}
]
}
保存编辑后将自动开始拷贝源代码到远程主机,一般路径为/root/.vs/mysql-8.0.19-ubuntu,并开始远程执行cmake命令,成功后会显示CMake生成完毕等字样。
5、开始远程编译,可以将VS2019的解决方案资源管理器窗口切换到CMake视图。点击全部生成开始远程项目编译过程。此过程较长,可耐心等待一会儿…
若编译过程中与服务器中断,可取消编译,在重新编译即可。
2、使用VS2019调试服务
1、首先在CMake视图下将mysqld项目右键设为启动项;
2、首次启动需要创建数据目录,可通过项目右键“调试和启动设置”,打开json编辑页,对启动参数进行第一次调整:
setupCommands
...
"args":[
"--datadir=x",
"--console",
"--gdb",
"--ssl=1",
"--port=20202",
"--socket=/tmp/gkodinov_20202.sock",
"--initialize-insecure"
],
visualizerFile
...
3、在后续的启动过程中,若要修改启动参数,均需重复上述第二步,确保添加或删除的参数正确。
4、设置断点调试,若需要像在windows下一样调试mysql,可以在合适的代码位置增加断点后按F5启动运行即可。与windows调试类似。一个有趣的地方是sql/mysqld.cc中的init_server_components()。
5、写在最后,该方式的远程调试也是VS最近新加的功能,所以可能不太稳定,所以可以保持VS的版本更新。同时,远程调试因为相互交互信息会有一些卡顿。
6、参考资料
https://mysqlserverteam.com/compiling-mysql-in-visual-studio-on-a-remote-linux-box/