WSL2 下 VS Code 编写 C 代码
记录 WSL2 下使用 VS Code 编写 C 代码并通过 Clang 调试时遇到的问题。
前戏
WSL2 的安装就不用说了,官方文档的描述非常详细,网上还有诸多大佬披荆斩棘写了很多好教程,搜索引擎一波就啥都搞定了;
VS Code 的语言插件就更不用说了,指定文件后缀并保存后,自然而然就知道需要装啥插件了,实在不行不还有搜索引擎嘛;
这里只安装了
和
既然要用 Clang,当然需要安装了:在 WSL2 的子系统 linux 上安装llvm
,lldb
,clang
;
然后随便写个 demo 用于生成调试配置文件:
WSL 当然要选 C++(GDB/LLDB)
了;
首先要选的是 Clang,至于选哪个看心情,反正哪个都能用,区别在于/usr/bin
和/usr/sbin
,搜索引擎一波就知道差异和选择了;
至此,调试文件就生成了,开始调试,问题也就来了;
问题一:找不到lldb-mi-xxx
,xxx 表示版本号
无图无真相:
看到问题提示时一头雾水,什么情况,还没开始就结束了?难道lldb
中不包含lldb-mi
吗?
lldb-mi: MI 调试程序;
几经查找后发现,貌似是 10.0 版本之后就不包含lldb-mi
了,如果需要使用则自己编译,那还等什么;
官方存储库 lldb-tools/lldb-mi 根据文档编译即可(在 WSL2 的 linux 上);
懒得看请运行:
1 | git clone https://github.com/lldb-tools/lldb-mi.git |
当然,也可以不管不顾直接调试(我就是这么干的 😭),毕竟“不听不听,王八念经”,然后会得到以下错误:
或者:
1 | Unable to start debugging. Unable to establish a connection to LLDB. The following message was written to stderr: |
最后还得滚回去(咳咳)编译lldb-mi
;
莫慌,还有其他解决方案,安装CodeLLDB
插件,一触即达,也就不会遇到下面两个问题了;
问题一点五:编译lldb-mi
时cmake
命令不存在?
这还不简单,sudo pacman -S cmake
(仅适用于 Arch,其他版本请自查);
问题二:编译lldb-mi
时出现”CMAKE_MAKE_PROGRAM is not set.”
出现此问题的应该不多,这里使用的是 Arch,其他 WSL2 子系统未知;
如果你也使用的是 Arch,并且是通过 yuk7/ArchWSL 安装的,那么就需要手动安装base-devel
基础包,单独安装 cmake 会报此错误;
1 | sudo pacman -S base-devel |
如果是自己下载手动安装的 Arch(没有使用yuk7/ArchWSL
),则不存在此问题;
然后编译并拷贝lldb-mi
到/usr/bin
或其他$PATH
路径,然后修改launch.json
的"miDebuggerPath"
为"/usr/bin/lldb-mi"
(默认是”/usr/bin/lldb-mi-xxx”),当然,也可以在拷贝时改名为lldb-mi-xxx
,配置文件就不用改了;
目前就遇到这两个问题,既然解决了,测试一下: