美文网首页HAProxy
HAProxy源码探索(4):使用vscode+WSL进行调试

HAProxy源码探索(4):使用vscode+WSL进行调试

作者: chenj23986526 | 来源:发表于2018-12-28 23:14 被阅读0次

    Windows 用户的福音

    以前在 Windows 上开发 Linux 的C程序时,往往需要借助 cygwin 或 mingw 等环境进行编译,而且配置调试的过程不那么容易,阅读源码也比较累
    现在强大的 vscode 配合 WSL(Windows Subsystem for Linux) 完全解决了这些麻烦

    先决条件

    • Windows 10
    • Windows Subsystem for Linux (建议使用 Ubuntu 18.04)
    • 在 WSL 上安装 gcc 和 gdb (新装系统请先执行 sudo apt update)
    • Visual Studio Code
    • 安装 Microsoft C/C++ extension for VSCode 插件

    注:安装过程就不再重复了,若遇到问题,请更新相关系统或软件到最新版本再重试

    配置

    • 打开源代码
      首先用 vscode 打开之前说的 haproxy 目录
      我们假定该目录是 d:/Sources/haproxy

    • 设置 c/c++ 插件配置
      ctrl+shift+p 选择 c/cpp Edit Configuration
      这时候会在你的根目录创建 .vscode 文件夹,并且自动创建 c_cpp_properties.json
      修改成以下的内容并保存

      {
        "configurations": [{
            "name": "WSL",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "/usr/bin/gcc",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "cStandard": "c11",
            "cppStandard": "c++17"
        }],
        "version": 4
      }
      

      设置好后,你会发现那些源代码里的符号变量都可以查看定义了,甚至可以导航到 sys/socket.h 这类 POSIX 专有的头文件中

    • 设置编译任务
      ctrl+shift+p 选择 Configure Task >> Create tasks.json file from templates >> Others
      修改成以下内容并保存

      {
        "version": "2.0.0",
        "tasks": [{
            "label": "build",
            "type": "process",
            "command": "bash.exe",
            "args": ["-c", "make"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }]
      }
      

      更多任务配置请参考 https://code.visualstudio.com/docs/editor/tasks#vscode
      ctrl+shift+b 编译一下,若成功会在你的代码根目录创建出 haproxy.o 和 haproxy 两个文件,这个和之前在纯 linux 环境下一致

    • 设置调试启动

      {
        "version": "0.2.0",
        "configurations": [{
            "name": "C Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/mnt/d/Sources/haproxy/haproxy",
            "args": ["-f", "haproxy.cfg"],
            "stopAtEntry": false,
            "cwd": "/mnt/d/Sources/haproxy",
            "environment": [],
            "externalConsole": true,
            "windows": {
                "MIMode": "gdb",
                "setupCommands": [{
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }]
            },
            "pipeTransport": {
                "pipeCwd": "",
                "pipeProgram": "c:\\windows\\sysnative\\bash.exe",
                "pipeArgs": ["-c"],
                "debuggerPath": "/usr/bin/gdb",
            },
            "sourceFileMap": {
                "/mnt/d": "d:\\"
            }
        }]
      }
      

      更多调试配置请参考 https://code.visualstudio.com/docs/editor/debugging#_launch-configurations

      和上次一样准备好 haproxy.cfg 配置文件,否则启动会报错
      在 main 函数上打个断点,然后按下 F5,调试就会启动,这样就完成了在 Windows 上调试 Linux 程序了

    官方文档参考

    相关文章

      网友评论

        本文标题:HAProxy源码探索(4):使用vscode+WSL进行调试

        本文链接:https://www.haomeiwen.com/subject/ppxnkqtx.html