在WSL中使用VSCode开发C语言项目
在Windows设备上开发Linux中使用的项目时,使用WSL可以在本地进行开发和编译工作,同时和实际的Linux环境保持较好的一致性。
假定已经安装好了VSCode,且配置安装好了WSL及至少一个发行版。此处以Debian为例。
在WSL中使用apt安装好编译C语言所需的相关软件包,其中build-essential可能包含后面的几个软件包,和其他一些编译所需的软件包,gcc用于编译c代码,g++用于编译cpp代码,gdb用于调试,make用于使用Makefile进行批量编译和处理等工作。
在VSCode中安装"Remote - WSL"和"C/C++"两个插件,其中"C/C++"插件还需要安装到WSL环境中,在VSCode中根据提示操作即可。
如果在WSL中VSCode的安装路径的bin文件夹不在PATH变量中,则需要手动添加。此处以VSCode的默认安装路径C:\Users\Administrator\AppData\Local\Programs\Microsoft VS Code\为例(注意修改Administrator为实际安装的用户名),使用
将它暂时添加到PATH变量中,或者将
写入到WSL中的~/.bashrc文件的末尾,之后重新打开WSL窗口即可。
之后在WSL新建任意一个文件夹,运行
即可在WSL的当前路径打开VSCode。
这里,我推荐的一个工程组织结构如下:
其中,main文件是编译后产生的工程文件,在Makefile中修改即可,src文件夹放置所有的源代码文件,obj文件夹放置所有编译中产生的.o文件,.vscode文件夹是运行VSCode后会自动生成的配置文件,包含了这个工程编译、运行等操作的流程。
这里贴出我使用的Makefile文件的内容(注意,其中的8个空格在实际文本中需要替换为Tab):
这样通过make命令即可编译整个工程,并生成最终的可执行文件(这里是工程文件夹根目录中的main文件)。如果之前已经编译过,则make命令只会编译在上次编译之后修改过的文件,从而加快了后续编译的速度。通过make -j4命令使用4线程进行编译工作,从而加快编译速度。通过make clean命令在编译结束后删除编译中产生的.o文件,但是这样下次编译时会重新编译整个工程。
如果要在VSCode中通过按F5进行编译和调试,要对tasks.json和launch.json作出相应的修改。
修改后的tasks.json内容如下
即将原有的通过gcc或g++进行编译修改为通过make命令进行编译。这样后续增加文件时无需再修改配置文件。
修改后的launch.json内容如下:
即指定让VSCode使用工程文件夹下的main文件作为可执行文件,而不是每个.c文件编译后产生的可执行文件作为可执行文件,并指定gdb作为调试工具。这样,按F5可进行调试工作,在调试时进入断点暂停时再按F5可继续执行。
博主您好,按照您的教程,发现在vscode中打断点 F5调试时无法断到断点,直接执行完,这是为什么呢?
要启用断点调试功能,您需要将launch.json中的stopAtEntry更改为true,可以修改后再尝试一下。