用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)

  在前一篇文章用Visual Studio Code配合Linux子系统进行C/C++开发(初级篇)里面,我们搭建了C/C++的开发环境,但是还不能调试,这怎么能行,下面,我们就把这个功能也配置起来。
  关键的部分参考了文档:Windows 10’s Windows Subsystem for Linux
  一、首先在Linux子系统安装调试工具,这里选用GDB

sudo apt-get update
sudo apt-get install gdb

  二、在Visual Studio Code中添加调试用的配置文件(参照下图)。
用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)_第1张图片
用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)_第2张图片
  将自动生成的配置内容删除(可选)。
  点击Add Configuration…,在弹出的项目中选择C/C++: (gdb) Bash on Windows Launch
用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)_第3张图片
  下面是自动生成的配置,我们需要进行修改,使之适合Linux子系统。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Bash on Windows Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "enter program name, for example ${workspaceFolder}/a.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "pipeTransport": {
                "debuggerPath": "/usr/bin/gdb",
                "pipeProgram": "${env:windir}\\system32\\bash.exe",
                "pipeArgs": ["-c"],
                "pipeCwd": ""
            },
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

  修改完成的配置文件如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Bash on Windows Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/mnt/c/Users/hongjun.liu/devNewHope/workspaceMoreBasic/CStudyBasic/main",
            "args": ["-fThreading"],
            "stopAtEntry": false,
            "cwd": "/mnt/c/Users/hongjun.liu/devNewHope/workspaceMoreBasic/CStudyBasic/",
            "environment": [],
            "externalConsole": true,
            "windows": {
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
            "pipeTransport": {
                "debuggerPath": "/usr/bin/gdb",
                "pipeProgram": "${env:windir}\\system32\\bash.exe",
                "pipeArgs": ["-c"],
                "pipeCwd": ""
            },
            "sourceFileMap": {
                "/mnt/c": "C:\\"
            }
        }
    ]
}

  为什么这样修改,参照之前文档也很容易理解,关键是由于文件系统的不同,所以要进行文件路径的转换,就像下面这样:

            "sourceFileMap": {
                "/mnt/c": "C:\\"
            }

  明白了这个思想,之前的修改就不难理解了。
  三、重新编译包含调试信息的可执行文件。
  在Linux终端执行下面的命令:

gcc -g -Wall main.c -o main

  设置断点(鼠标左键或者F9),然后点击实行按钮或者F5开始调试:
用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)_第4张图片
  我们可以看到,断点起效了,是不是很激动?
用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)_第5张图片
  至此,我们就可以利用这个开发环境进行学习和研究了。后续我们会继续关注更高级的话题。

你可能感兴趣的:(我的开发日记)