美文网首页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