使用VSCode写c++及调试

最近换了ubuntu系统折腾,在ubuntu上不想搞visual studio这么笨重的IDE(当然能用Visual Studio的那个当然还是最好的),听说VSCode挺好用的,于是尝试了下。VSCode是一个轻量级的编辑器,但是可以通过插件实现非常强大个性化的功能,这里尝试使用VSCode写c++代码及调试。

这个方面文章写的够多了,只记录下自己上手vscode遇到的一些问题以及参考的一些博客链接。

  1. 首先关于vscode c++编程教程,参考官方教程,这个教程是在WSL(Windows Subsystem for Linux)平台上的vscode中编写c++,在ubuntu上的操作基本上一样。

    遇到问题:

    1. c++插件安装的问题
      在安装vscode以及安装g++以及gdb的部分都没有问题,但是安装c++插件时按照vscode的提示好像有一些依赖没有安装上。参考这篇博客解决了——实际问题可能是因为网络或者代理的问题,导致无法下载c++插件的一些依赖项,按照该博客所说在插件的目录中找到package.json文件,并从中找到依赖项的网址,通过其他方式下载这些依赖项(比如我用的uGet下载),再按照博客里说的方法复制一些文件到c++插件目录中去就解决了。打开vscode发现intellisense又好使了,一切如官网一样。
    2. .vscode文件家下几个.json文件作用
      • task.json——以设置任务/动作的方式来执行编译命令,打开查看其内容,可以看到实际上是执行了g++的编译指令来编译c++程序
      • launch.json——调试相关设置。task.json设置编译时相关的属性,而launch.json设置运行时相关的属性,比如通过gdb运行程序就可以进行调试
      • c_cpp_properties.json——编译路径与智能感知设置,包括包含路径、c++标准、编译器路径之类的
  2. 在vscode中使用cmake管理项目
    通过上面第1部分,已经可以在VSCode中写c++,有智能补全,有文档等,还可以跳转到定义,查看声明、定义与引用等,在辅助编码上基本上像一个IDE了;但是如果还想在vscode中使用cmake,打开查看、编译与调试cmake管理的项目需要怎么做?

    ——这里参考这篇博客实现在vscode中使用cmake管理。通过这篇博客我们基本能知道:

    • task.json执行动作,基本相当于vscode中的命令行或是脚本。使用该配置文件来配置编译过程等(比如设置动作为执行g++命令使用gcc编译器编译程序,或是设置动作为调用build.sh脚本,在build.sh中通过cmake来按照CMakeLists.txt编译),执行该动作使用Ctrl+Shift+B

    • launch.json用来设置程序运行的相关配置,比如执行哪个可执行文件、执行使用的参数等,通过该配置文件可以设置使用gdb来调试程序,启动运行/调试使用Ctrl+Shift+D

    • c_cpp_properties.json指定添加的库的头文件路径等,添加了头文件路径自动补全才能用,比如写#include <iost可以提示补全为#include <iostream>;写下取成员运算符.时会出现该对象可用成员变量与函数等

      以上每次新建或者打开项目都需要配置task.json,launch.json以及c_cpp_properties.json等,过于繁琐。为了不那么麻烦,简化成傻瓜操作,可以下载安装一个CMake Tool的插件,如下:

      在这里插入图片描述
      然后在状态栏会出现build按钮与debug的图标(为什么我这里有两套BuildDebug,因为我不小心装了两个CMake Tool,一个1.3.0,一个1.5.2=.=||)
      在这里插入图片描述
      点击build即可编译项目,如果没有设置编译套件(Kits),会弹出提示选择套件,如下所示:
      在这里插入图片描述
      编译完成后右下角可能会自动设置intellisense(比如CMakeListx.txt中使用了find_package查找外部库以及添加查找到的库的包含头文件路径,cmake tool插件会自动把该路径添加到intellsense的读取路径中去,这样相应的自动补全功能就可用了);
      在这里插入图片描述
      之后点击debug图标就可以调试了,调试与visual studio里基本一样F5继续运行,F10步进,F11跳进,Shift+F11跳出。

  3. 带参数调试
    上面已经可以通过cmake tool傻瓜式进行调试了,但是有时候一个编译完成的可执行程序运行时需要给定参数,这个时候可以在launch.json文件的args后面给定参数。
    在这里插入图片描述
    理论上应该是在以上launch.json文件中的args后面指定程序运算时使用的额外参数,但是我这里不知道为什么更改了这个依然没有在调试的时候添加上参数

发布了28 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/liyunxin_c_language/article/details/104304977