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 程序了
网友评论