汪道之

有人的地方就有江湖

0%

如何在Windows上用Linux环境打断点调试

初心是我希望用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区别还挺大的。

就这样,至此结束。