首页 > 其他分享 >VSCode-配置c_cpp环境

VSCode-配置c_cpp环境

时间:2022-10-28 17:22:22浏览次数:87  
标签:launch VSCode 配置 clang ++ json cpp 调试

VSCode-配置c_cpp环境

mac下VSCode 配置 cpp 环境记录:

一. 环境

  • macOS:10.14
  • VSCode:1.44.2
  • Xcode:11.3.1(会用到Xcode的工具链,如lldb、clang)

二. 安装插件

编辑、调试C/C++程序,需要安装VSCode 插件:C/C++。插件官网地址

image-20221028160254046

现在,用于演示的该文件夹中只有hello.cpp一个文件。继续往下阅读,看看如何配置文件。

image-20221028161715888

三. 添加 launch.json

lauch.json 用于设置调试、运行时的东东;
tasks.json 用于设置编译时的东东。

3.1 点击顶部菜单栏运行(Run)-> 添加配置(Add Configuration

image-20221028161837939

3.2 点击 C++(GDB/LLDB)(请忽略下图中别的东西,博主装了别的插件所以才有的

image-20221028161929971

3.3 点击下图中的第一个clang++ - 生成和调试活动文件。因为该示例使用的C++语言,并且用clang编译器编译(和gcc一样是Mac中自带的,但是推荐用clang,并且不自带g++,所以gcc系的编译器不能默认还不能编译c++,图中的g++是博主自己安装的;图中两个clang++XXX经过实测生成的文件是一样的)。

image-20221028163928280

3.4 会自动生成.vscode文件夹和launch.json文件。

需要特别注意的键:

  • preLaunchTask:该值需要与tasks.json中的label相同,否则调试时会提示找不到;

  • externalConsole:如果需要输入东西,比如使用了scanf()函数, 最好修改为true使用外部控制台(在运行时额外打开终端)。否则用VSCode内置的控制台不能输入东西(不是内联控制台,内联控制台和外部控制台其实是一样的,但是这里调试的时候没有内联控制台这个选项)
    其他的键,一般不用修改:

  • name:显示在‘’调试”(Run)侧边栏的名字;

  • type:类型。不能改;

  • request:有launchattach可选,这里填launch,按下F5就可以启动调试了;而不是attach(附加);

  • program:程序所在路径和程序名,更多变量在官方文档

  • args:这里填命令行参数(main()函数的形参),如果没有可不填;

  • stopAtEntry:为true时,在开始运行程序时,不立刻往后执行,先暂停一下,一般填false;

  • cwd:当前工作目录,在哪个目录调试程序,一般在当前文件夹(项目所在文件夹);

  • environment:临时手动添加的环境变量;

  • MIMode:指定调试器gdb或lldb。Mac下推荐用lldb,Xcode下载好就有;

可以通过鼠标悬停在关键字(键名)上,查看官方解释。

image-20221028164913737

至此,launch.json 就配置好了

四. 添加 tasks.json

lauch.json 用于设置调试、运行时的东东;
tasks.json 用于设置编译时的东东。

4.1 把界面点到代码的页面,别停留在launch.json,点击顶部菜单栏终端(Terminal)-> 配置任务(Configure Tasks)

注意:一定要将界面切到包含C++ code 的窗口,再点击顶部的菜单栏选项,VSCode 是根据当前界面的活动窗口来自动选择task 任务的。

image-20221028165329435

4.2 同样选择clang++的选项,博主这里有两个clang++相关的东东,区别在clang++的路径不一样,博主这里用路径为/usr/bin/clang++的好使,用Xcode路径的那个不好使。

image-20221028165423510

点击后就会在.vscode中生成tasks.json文件。

需要特别注意的键:

  • label:需要与launch.json中的preLaunchTask保持一致,否则调试时会提示找不到;
  • command:编译器所在的位置,博主用的/usr/bin/clang++
  • args:编译参数,如果你在命令行用过gcc编译器应该知道这些选项和值都是啥。clang++命令的选项与gcc的类似,可以根据自己需要删改,如需要开启O2来编译,则可以加上两行"-O2"。更多变量在官方文档
  • cwd:运行时程序的工作目录,一般与command编译器的路径一致。博主这里是手动修改了command值成截图中样子,所以两处不同,但是也可以使用;

可以通过鼠标悬停在关键字(键名)上,查看官方解释。

image-20221028165716817

至此,tasks.json 配置完成

五. 调试

点击运行->启动调试,或按键盘F5,或调试()侧边栏->绿色小箭头,开始调试。

如图,博主加了断点(在行号前点一下)、用了外部控制台。窗口顶部中间或触控栏上可以单步往下执行和终止程序。

image-20221028165829104

六. 设置头文件路径

有些时候一些Linux的头文件在windows下可能找不到(如:pthread.h),这个时候需要重新指定一下头文件的路径:

image-20221028170643245

找到编译器路径,VSCode会自动根据编译器路径去查找需要包含的头文件路径:

image-20221028170831008

另外须将 IntelliSense 的选项值修改如下:

image-20221028170950571

这样的话,会自动生成 c_cpp_properties.json文件,这样就能找到某些特殊平台上的头文件了:

image-20221028171133526

image-20221028171226369

七. 总结

关键点:

  • 配置lauch.jsontasks.json先后顺序可随意;
  • tasks.json的 label 和launch.json的preLaunchTask要保持一致,否则调试时会提示找不到;
  • 如果需要输入东东,一定要将launch.json中的externalConsole设置为true,只有这种方法可以在调试时输入。

参考链接:

  1. https://blog.csdn.net/qq_33973359/article/details/105720511

标签:launch,VSCode,配置,clang,++,json,cpp,调试
From: https://www.cnblogs.com/yongdaimi/p/16836771.html

相关文章

  • 智能分析网关使用教程:如何在EasyCVR视频融合平台配置告警与抓拍?
    AI智能分析网关设备内置多种深度学习算法,可支持对接入的多路视频流进行智能检测、智能识别等,包括人脸检测与识别、车辆检测与识别、车牌识别、烟火识别、安全帽识别、区域入......
  • asp.net mvc 3 配置全局异常处理 Web.config中设置CustomError
    Web.config中设置CustomErrorCustomError定义自动处理异常的行为,如下所示:<system.web><!--<customErrorsmode="RemoteOnly"defaultRedirect="~/error.html"/>--><cust......
  • VSCode-多文件编译执行
    VSCode-配置多文件编译默认VSCode只能编译单个文件,若多个文件一起编译,经常会报undefinedreference找不到引用的错误,比如下面的问题:这个时候即使你把所有的cppcode......
  • 解决CentOS添加新网卡后找不到网卡配置文件
    使用VMwareWorkstation虚拟机安装好CentOS7虚拟机后,添加网卡后CentOS7无网卡配置文件的问题,添加第二块网卡以后,进入CentOS7系统后,看不到网卡配置文件。进入CentOS7系统......
  • Linux配置NTP时间同步
    1、检查系统是否安装了NTP包(linux系统一般自带NTP4.2)没有安装我们直接使用yum命令在线安装:yuminstallntp2、NTP服务端配置文件编辑vim/etc/ntp.conf添加服务器NTP服务器......
  • java-log4j-xml配置 category、logger、boot 标签使用
    java-log4j-xml配置category、logger、boot标签使用一、节点说明:root:基础日志配置、包括使用的输出器、日志级别等;logger:自定义输出配置;category:自定义输出配置;logger......
  • Spring mvc配置
    <!--自动扫描包,开启注解--><context:component-scanbase-package="com.wang.springmv.controller"/><!--annotation-driven配置的作用如下:1)、主要是......
  • springboot-slf4j日志输出级别简要配置
    springboot-slf4j日志输出级别简要配置1.前言springboot使用ymal、yml配置,更好的将相关的配置节点聚合在一起,方便查看和增改配置项。配置可以写在application.yml、spring......
  • gin-配置文件管理
    1.使用库viper使用示例packagemainimport( "fmt" "github.com/spf13/viper")typeServerConfigstruct{ ServiceNamestring`mapstructure:"name"` Port......
  • VNC配置1-全面认识--亲测OK
    VNC配置1---亲测OKTigerVNCTightVNC的分支,取代原TightVNC,虚拟会话使用Xvnc,物理会话使用x0vncserver。Xvnc是新创建一个虚拟桌面,而x0vncserver可以共享本地的桌面。......