1-2 VS2019常用调试方法(断点设置、条件断点、调试按钮、逐过程、逐语句、监视变量、快速监视)

2023-11-15

前言

主要调试方法:

1、打印数据 2、普通断点 3、条件断点与条件追踪 4、单步调试 5、添加监视


1-打印数据

最基础的调试方法就是在程序运行过程中打印数据。

#include<iostream>
using namespace std;

int main()
{
	int a = 0;
	for (int i = 0; i < 10; i++)
	{
		a = a + i;
		if (i == 5)
			cout << "debug: i==5, a=" << a << endl;
	}
    cout << a << endl;
	return 0;
}

输出:
debug: i==5, a=15
45 

在上面程序中,需要注意的是如果if语句输出的信息是仅仅给程序员看的,在release版本中不希望出现,就可以给if语句加上宏。这样,在release版本中if语句就会直接变成灰色不会执行。

int main()
{
	int a = 0;
	for (int i = 0; i < 10; i++)
	{
		a = a + i;
#ifdef _DEBUG
		if (i == 5)
			cout << "debug: i==5, a=" << a << endl;
#endif // _DEBUG
	}
	cout << a << endl;
	return 0;
}
debug模式下输出:
debug: i==5, a=15
45
    
release模式下输出:
45

2-普通断点

断点调试都要在debug模式下,release版本中是直接跳过断点的

2-1断点快捷键

F9-插入断点

Ctrl+F9- 禁用断点

Ctrl+Shift+F9-删除所有断点


3-条件断点与条件追踪

使用普通断点进行调试时,可以为断点添加条件,就是满足什么条件时,这个断点才会生效,用在循环里效果显著。有两种方式设置断点条件:

1)鼠标在断点上方悬停会出现设置按钮;

在这里插入图片描述

2)直接在断点行右键【断点】【条件】

在这里插入图片描述

设置断点条件后,断点提示信息会更新如下:

在这里插入图片描述

还可以在到达条件断点时,添加在该断点时的操作,如下:

在这里插入图片描述

注意在操作输出时,变量必须加{},否则就会输出为字符串

另外还可以使用$来调用系统本身的变量,如线程、进程来输出


4-单步调试

主要区分就是几个调试按钮

逐过程(F10):遇到函数不会进入

逐语句(F11):遇到函数会进入

对于单行不可展开的语句,逐过程与逐语句发挥作用相同

跳出(shift+F11):进入函数后想跳出,就要适用

在这里插入图片描述

参考:visual studio 2019 :逐过程逐语句Debug


5-添加监视

选中变量【添加监视】

5-1快速监视

在数组传进函数中时,通常传入数组地址,将数组的指针添加监视只能看到当前指向的元素,如果进行【快速监视】就能看到当前指向元素后面的信息。

下面的图就是在局部变量中指针pArr只能显示当前指向的元素,如果想显示更多信息就需要使用快速监视

在这里插入图片描述

选中指针pArr,右键【快速监视】,在指针后面输入,5,点击【重新计算】,会显示从当前元素开始向后共5个元素,如果逗号后面的数字太大使数组越界,就是混乱数据了。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1-2 VS2019常用调试方法(断点设置、条件断点、调试按钮、逐过程、逐语句、监视变量、快速监视) 的相关文章

随机推荐

  • PUT_LINE没有输出问题解决方法

    DBMS OUTPUT PUT LINE output 方法用于BEGIN和AND中间 作用是输出结果 当我使用它时发现 没有打印出结果 查了资料 说是oracle默认是关闭的 要在sqlplus中执行 set serveroutput o
  • ChatGPT这么火,如果ChatGPT滥用或者重度依赖,会怎么样?

    目录 绪论 风险 风险1 思维能力 风险2 历史文献 风险3 舆论问题 总结 我们都知道 现在最火的就是ChatGPT 各大大厂都在讨论它 马大大也出山讨论它 可想而知 已经火到什么地步了 绪论 我不知道 有没有注意到他的标题 第一想到的不
  • MATLAB:图像乘除法运算(immultiply、imdivide函数),同时比较双精度类型图像运算结果...

    图像乘除法运算涉及到immultiply imdivide函数 实现代码如下 1 图像之间的乘法运算 close all 关闭当前所有图形窗口 清空工作空间变量 清除工作空间所有变量 clear all clc A imread ipexr
  • IIS实现http跳转https的重定向方法

    整体流程为 1 安装SSL证书 2 下载安装URL Rewrite模块 3 配置 URL重写 规则 或者修改web config配置文件 一 安装部署证书 首先安装SSL证书 二 安装URL ReWrite扩展 URL ReWrite扩展下
  • 猿创征文

    猿创征文 国产数据实战之docker部署MyWebSQL数据库管理工具 一 MyWebSQL介绍 1 MyWebSQL简介 2 MyWebSQL特点 二 检查本地环境 1 检查docker状态 2 检查docker compose版本 三
  • Ubuntu 20系统WIFI设置静态IP地址,以及断连问题

    最近工作需要购置了一台GPU机器 然后搭建了深度学习的运行环境 在工作中将这台机器当做深度学习的服务器来使用 前期已经配置好多用户以及基础环境 但最近通过xshell连接总是不间断的出现断连现象 补充一点 Ubuntu系统中与网络设置有关的
  • Oracle报错ORA-00911: 无效字符问题

    跑kettle任务 今天写sql查询数据库数据时出现ORA 00911 无效字符问题 我把SQL到toad中是可以查询到数据的 但是在MyECLIPSE中执行就报ORA 00911 无效字符的错误 原因 SQL中 有个 分号 里面多了一个
  • Mac 安装 Neo4j

    1 下载Neo4j 社区版 MacOS安装社区版Neo4j 图数据库 https blog csdn net huacha article details 81123410 问题 在下载JDK时需要Oracle 登陆账号 解决方法 http
  • Vue+ElementUI实现简单的用户管理系统(四):查看用户详情页及删除用户

    一 展示用户详细信息 在点击 查看 按钮时 传递了用户的Id 我们要把这个Id拿出来 this route query id created this handle this route query id handle方法 也就是根据id使
  • [YOLO专题-3]:总体-目标检测的常见模型评估指标

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122134907 目录 前言
  • HTML BFC的理解与作用

    HTML BFC的理解与作用 含义 BFC Block formatting context 直译为 块级格式化上下文 它是一个独立的渲染区域 只有Block level box参与 它规定了内部的Block level Box如何布局 并
  • elasticsearch实现入库分词,查询不分词,实现like关键字%

    因为在工作中遇到一个需求 需要对请求内容实现类似于mysql的 like 关键字 模糊匹配功能 同时要保证效率大数据量效率问题 因此不能使用wildcard在网上看了很多也不太好使 自己琢磨了一下成功了 该功能仅对非中文存储的字段有效果 使
  • Blender软硬边

    https www youtube com watch v CdHXpHPWKYo blender这里的算法感觉就是根据角度做自动平滑 然后mark sharp它就不平滑 貌似有bug 加修改器貌似可以解决这个问题 凹面貌似也有点问题 设置
  • 结合Android Studio和MAT检测并简单分析内存泄露

    1 什么是GC 在分析内存泄露之前首先要了解一下GC GC Garbage Collection 就是Java中常提到的垃圾回收 指的是JVM会自动回收不在被引用的内存数据 2 什么是GC Roots GC Roots即Java虚拟机当前存
  • SAP-基于批次特定计量单位的应用-01-产品数量管理

    原文链接 https mp weixin qq com s zknWGuz2lU387vAGSiykw 大家可以关注我个人公众号 所有分享内容 会在公众号第一时间推送 且阅读排版更好 愿大家的学习 轻松且愉快 如果大家觉得有用 希望转发关注
  • 计算机打字正确姿势,电脑打字手指的正确姿势,涨知识了

    近年来 随着科技水平的提高 电脑已经成为了必不可少的工具了 能够为工作和学习提供一定的便利性 今天来给大家说说在电脑上打字手指应如何摆放 以帮助提高打字的速度 熟悉键盘 01 在开始打字前 首先要对键盘上每个字母对应的位置有一定的了解 不仅
  • LeGO-LOAM代码详细注释版

    学习LeGO LOAM时 写的代码注释github代码链接 一部分注释来自github用户wykxwyc 一部分来自网上查阅 还有一部分是自己的理解 持续更新中
  • C语言---离散数学实验--图的基本概念及其应用

    目录 欧拉图的判定 实验内容 编辑 无向图的判断 算法展示 源码 有向图的判断 算法展示 源码 求欧拉路 算法展示 整体源码 对无向图的判断 对有向图的判断 二叉树的应用 源码 源码下载 实验目的 掌握判断欧拉图的方法 掌握求最优二叉树的方
  • kubeadm常用

    kubeadm常用 配置kubeadm自动补全 初始化一个master节点 导出kubeadm默认配置文件 将node节点加入集群 生成node配置 升级k8s版本 kubeadm升级node 维护或下线node节点 管理kubeadm j
  • 1-2 VS2019常用调试方法(断点设置、条件断点、调试按钮、逐过程、逐语句、监视变量、快速监视)

    文章目录 前言 1 打印数据 2 普通断点 2 1断点快捷键 3 条件断点与条件追踪 4 单步调试 5 添加监视 5 1快速监视 前言 主要调试方法 1 打印数据 2 普通断点 3 条件断点与条件追踪 4 单步调试 5 添加监视 1 打印数