教你三步搞定VsCode调试C++

目录

      • [1 配置编译任务](#1 配置编译任务)
      • [2 配置调试任务](#2 配置调试任务)
      • [3 进行调试](#3 进行调试)

1 配置编译任务

使用VsCode进行C++开发时,除了在机器上安装必要的编译工具(例如,gcc、g++、cmake等)之外,还需要在VsCode配置编译任务,从而可以通过点击或者快捷键的方式进行快速编译。

配置编译任务需要配置两个文件:

  • c_cpp_properties.json:环境管理
  • tasks.json:编译任务

配置c_cpp_properties.json:

ctrl + p,输入> C/C++,在其中找到Edit Configuration:

需要配置的项主要有:

  • Compiler path:编译器路径
  • C standard:C语言版本
  • C++ standard:C++版本

配置tasks.json:

ctrl + p,输入> tasks:

然后将json修改为:

json 复制代码
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "cmake",
			"command": "cmake",
			"args": [
				"-G",
				"Unix Makefiles",
				"-DCMAKE_BUILD_TYPE=Debug"
			],
			"group": "build",
			"problemMatcher": [],
			"detail": "CMake template build task"
		},
		{
			"label": "make",
			"command": "make",
			"problemMatcher": []
			
		},
		{
			"label": "Build",
			"dependsOrder": "sequence",
			"dependsOn": [
				"cmake",
				"make"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			}
		}
	]
}

tasks中有三个对象,第一个是执行cmake命令,第二个是make命令,第三个是将第一个和第二个整合起来,顺序调用cmake和make,并且设置为默认操作,因此,当选择Terminial->Run Build Task时,就会依次执行cmake和make进行编译。

2 配置调试任务

ctrl + p,输入> Debug:

随便选择一个应用类型,然后将launch.json修改为:

json 复制代码
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "cppdbg",
            "request": "launch",
            "name": "gdb",
            "program": "${workspaceFolder}/test",
            "MIMode": "gdb",
            "cwd": "${workspaceFolder}"
        }
    ]
}
  • type:类型
  • name:名称,用于区分多个配置
  • program:调试的程序
  • MIMode:指定调试器,这里用gdb
  • cwd:当前目录,可以直接使用变量

然后就可以打开调试窗口启动调试:

3 进行调试

在调试窗口,可以设置断点,然后进行调试,调试过程中可能会使用到4个快捷键:

  • F10(Step Over):一步一步执行
  • F11(Step Into):进入函数执行
  • F5(Continue):继续执行,在下一个断点处停住
  • Ctrl + Shift + F5(Stop):停止调试
相关推荐
会编程的小孩8 小时前
C++ qt的安装
c++
小成2023032026513 小时前
C++~07补充
开发语言·c++
hold?fish:palm13 小时前
40 二叉树的直径
c++·leetcode
解决小子14 小时前
【虚幻引擎】【C++】【GAS框架】构建角色基类、属性集、数值钳制
c++·笔记·游戏引擎·虚幻·gas·能力系统
lunar_coder15 小时前
【C++】如何解决智能指针的析构函数,如何实现shared_ptr的引用计数以及解决shared_ptr的循环引用
c++·1024程序员节
白白白小纯16 小时前
C++进阶.多态
c++
凯瑟琳.奥古斯特17 小时前
力扣1016高效解法:剪枝优化技巧
开发语言·c++·算法·leetcode·职场和发展
风别鹤17 小时前
Xcode pod ‘xxx/xxx.h‘ file not found
ide·macos·xcode
xiangyun6117 小时前
C++ priority_queue 底层:手撕二叉堆与 Top K 问题
c++·算法·面试·stl·1024程序员节
坤坤子吖17 小时前
C++继承:友元、静态成员、多继承与组合
开发语言·c++·笔记·学习·1024程序员节