初心是我希望用IDE打断点调试,两种方式,其一用vscode连接服务器来,vscode中打断点调试;其二是用clion来,利用wsl运行代码,clion中打断点调试。但两种方式都遇到了一些问题,下面做个简要记录。
cmake项目使用vscode远程调试
第一种,当我希望用vscode连接服务器远程调试代码时,总是无法正确构建和运行代码,vscode界面一堆的运行按钮,我都感觉不是一个插件提供的(插件装多了也不好)
总之解决方案就是vscode调试cmake需要两个文件在.vscode中,一个launch.json,一个tasks.json(没有可以自己创建),内容参考如下:
launch.json
{
"version": "2.0.0",
"configurations": [
{
"name": "cmake build",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/可执行文件(在tasks中产生)",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Build my project(重要!!!cmake先产生可执行文件)",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
tasks.json
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build/"
},
"tasks": [
{
"label": "cmake",
"type": "shell",
"command": "cmake",
"args": [
".."
]
},
{
"label": "make",
"group":{
"kind":"build",
"isDefault":true
},
"dependsOn": ["cmake"],
"command": "make",
"args":[
]
},
{
"label":"Build my project(和上面前置执行名一样)",
"dependsOn":[
"make"
]
}
]
}
这样vscode中就可以跑了,选择launch.json中的这个配置。
cmake项目使用clion运行wsl环境
第二个是clion,我配了它的wsl远程工具链,总提示我找不到cmake,后来一惊醒,我给clion的cmake地址是一个软链接,它应该是不支持软链接,于是把工具链中的配置换成了wsl中cmake可执行文件在的位置,通了。
值得注意的是,我本来希望clion通过ssh像vscode一样远程连接上wsl的,后来发现clion的远程开发方式是使用远程的工具链,代码还是在本地,不过运行环境是远程的,而且clion中有个Tools>Deployment>Configuration,里面可以看出来clion是在本地建了一个文件夹存代码用ftp和远端保持同步,所以你在clion中看到的代码并不是服务器上的代码而是本地的,这点和vscode区别还挺大的。
就这样,至此结束。