VS实用调试技巧(程序员的必备技能)

调试的重要性

在我们写代码的时候,如果程序出现了bug,那么下一步就是找到bug并修复bug!而这个找问题的过程就被称为调试(英文叫debug,消灭bug的意思)。

调试能观察到程序内部执行的细节,可以增加程序员对代码的理解和掌控,也能更高效的解决程序中存在的bug,提高写代码的能力!

调试的环境

在VS上编写程序的时候有两个版本,一个是Release、另一个是Debug

Debug称为调试版本,这个版本包含调试信息,并且不做任何优化,是程序员在调试程序时候用到的版本!

Release称为发布版本,这个版本是用户直接使用的,往往进行了各种优化,使得程序在代码大小和运行速度上都是最优的,而且不包含调试信息(不能调试)!

调试常用到的快捷键

F9:创建断点和取消断点

也可以在上图所指的地方单击鼠标左键创建和取消!

断点的作用:

断点可以在程序的任意位置进行设置,打上断点就可以使得程序执行到断点处暂停执行,可用于与其他的一些快捷键配合使用,便于观察。

条件断点:只有在程序执行过程中满足这个条件才触发断点,在断点处单击鼠标右键,然后点条件就可以设置想要的条件进行观察了!

F5:启动调试,经常用来直接跳到下一个断点处,一般是和F9配合使用

这里说的下一个断点不是指物理意义上的下一个断点,而指的是程序执行逻辑上的下一个断点!

F10:逐过程调试,可以是一条语句,也可以是一次函数调用

按F10调试时不能进入函数的内部观察细节!

F11:逐语句调试

按F11可以使我们在调试时让程序的执行逻辑进入函数内部,便于更好的观察细节!

Ctrl+F5:开始执行不调试

可以让程序直接运行起来

监视

当开始调试之后,在菜单栏中选择【调试】->【窗口】->【监视】,然后任意打开一个就可以观察程序运行时候的一些变量或者表达式了!

例如要观察下面这个代码中变量的值

内存

内存可以观察变量在内存中的存储情况。也是在开始调试之后,在菜单栏中选择【调试】->【窗口】->【内存】,然后任意打开一个

在内存中观察数据要在地址栏处输入地址才能在该地址处观察数据

举例

假如要调试下面这个代码

#include <stdio.h>
int add(int x, int y)
{int r = 0;r = x + y;return r;
}
int main()
{int a = 10;int b = 70;//写一个函数计算两个整数的和int ret = add(a, b);return 0;
}

调用add函数之前:先按F10开始调试

调用add函数:在代码执行到16行时,按F11进入函数内部,按F10执行下一条语句

调用完add函数之后变量ret的值:

常见的错误归类

编译型错误:一般是语法错误

链接型错误:比如拼写错误、头文件没包含等等

运行时错误:需要借助调试才能逐步定位问题所在,进而解决问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401113.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列

Kafka系列之&#xff1a;Kafka Connect深入探讨 - 错误处理和死信队列 一、快速失败二、YOLO&#xff1a;默默忽略坏消息三、如果一条消息掉在树林里&#xff0c;会发出声音吗&#xff1f;四、将消息路由到死信队列五、记录消息失败原因&#xff1a;消息头六、记录消息失败原因…

什么是数据仓库ODS层?为什么需要ODS层?

在大数据时代&#xff0c;数据仓库的重要性不言而喻。它不仅是企业数据存储与管理的核心&#xff0c;更是数据分析与决策支持的重要基础。而在数据仓库的各个层次中&#xff0c;ODS层&#xff08;Operational Data Store&#xff0c;操作型数据存储&#xff09;作为关键一环&am…

【6大设计原则】代码的艺术:深入探索单一职责原则

1. 引言&#xff1a;理解软件设计的艺术 软件设计&#xff0c;如同艺术创作&#xff0c;需要遵循一定的原则和规则。设计模式六大原则&#xff0c;是软件设计中不可或缺的指导方针。它们为软件开发者提供了一种思考问题的方法&#xff0c;帮助我们编写出更加优雅、高效和可维护…

Rocky系统部署k8s1.28.2单节点集群(Containerd)+Kuboard

目录 Kubernetes介绍 Kubernetes具备的功能 Kubernetes集群角色 Master管理节点组件 Node工作节点组件 非必须的集群插件 Kubernetes集群类型 Kubernetes集群规划 集群前期环境准备 开启Bridge网桥过滤 关闭SWAP交换分区 安装Containerd软件包 K8s集群部署方式 集…

Type-C接口取电芯片-LDR6500

取电芯片&#xff0c;特别是针对Type-C接口的取电芯片&#xff0c;如LDR6328系列&#xff0c;是近年来电子设备领域的一个重要技术组件。这些芯片通过智能协议控制&#xff0c;实现高效、安全的充电过程&#xff0c;并广泛应用于智能手机、平板电脑、笔记本电脑、小家电等各类需…

骗水技巧!怎么让猫咪多喝水?热门补水猫罐头推荐

我家一开始喂的是猫粮&#xff0c;买的还是进口牌子。然后发现团团有很多眼屎&#xff0c;泪痕也很重&#xff0c;我一度怀疑是这个牌子的猫粮不太好&#xff0c;后来就换成了国产的&#xff0c;价格确实少了一半&#xff0c;但是问题还是没有改善&#xff0c;而且吃完以后&…

HarmonyOS应用二之代办事项案例

目录&#xff1a; 1、代码分析2、ArkTS的基本组成3、重点扩展 1、代码分析 1.1代码&#xff1a; 在鸿蒙&#xff08;‌HarmonyOS&#xff09;‌的ArkTS框架中&#xff0c;‌aboutToAppear() 是一个自定义组件的生命周期函数&#xff0c;‌它在组件即将显示时被系统自动调用1。…

多条折线图修改图例以及自定义tooltip

在图例后面添加所有数据之和修改之后 series 中的name之后导致tooltip也加上了重新自定义tooltip&#xff0c;去掉总量统计 核心代码 监听数据改变计算总量修改name字段自定义 tooltip // 计算每条线的总和 const sum1 this.VALUE1.reduce((acc, val) > acc val, 0); co…

应急响应:Linux 入侵排查思路.

什么是应急响应. 一个组织为了 应对 各种网络安全 意外事件 的发生 所做的准备 以及在 事件发生后 所采取的措施 。说白了就是别人攻击你了&#xff0c;你怎么把这个攻击还原&#xff0c;看看别人是怎么攻击的&#xff0c;然后你如何去处理&#xff0c;这就是应急响应。 目录&…

Python OpenCV 影像处理:边缘检测

►前言 上篇介绍使用OpenCV Python findContours() 函数用于在二值化影像中寻找连通的白色区域&#xff0c;并返回一系列点的集合来表示找到的轮廓。本篇将介绍基于计算影像的梯度&#xff0c;通过在影像中找到梯度值的变化来识别边缘&#xff0c;边缘检测通常用于预处理步骤&…

【区块链+食品安全】湖南省食品行业联合会:溯链中国—基于区块链的食品安全可信追溯平台 | FISCO BCOS应用案例

食品安全追溯体系的建设&#xff0c;能够切实加强食品安全监管&#xff0c;确保人民群众饮食安全和身体健康&#xff0c;是创建食品安全城市必不可少的一部分。然而&#xff0c;中心化存储、信息孤岛、窜货是传统溯源行业最大痛点。区块链技术的快速发展&#xff0c; 使得防伪溯…

文案二创app下载,为你轻松生成原创文案

在当今数字化的时代&#xff0c;各种应用软件如雨后春笋般涌现&#xff0c;为我们的生活和工作带来了极大的便利。而其中&#xff0c;有一款特别的短剧文案二创app&#xff0c;它以其独特的功能和优势&#xff0c;为文案创作者们打开了一扇全新的大门&#xff0c;让生成原创文案…

电子电气架构 --- 智能驾驶域控制器供应商简介

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

Redis7.0.15 主从复制、哨兵模式搭建

主从复制&#xff1a;master以写为主&#xff0c;slave以读为主&#xff0c;当master数据变化的时候&#xff0c;自动将新的数据异步同步到其他的slave数据库 1. Redis复制介绍&#xff1a; https://redis.io/docs/latest/operate/oss_and_stack/management/replication/ 读写…

【秋招笔试】8.11大疆秋招(第二套)-测开岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

Python基于TensorFlow实现卷积神经网络-双向长短时记忆循环神经网络分类模型(CNN-BiLSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着人工智能技术的快速发展&#xff0c;深度学习已经成为处理复杂数据集的关键工具之一。其中&#x…

【48 Pandas+Pyecharts | 2024年巴黎奥运会奖牌数据分析可视化】

PandasPyecharts | 2024年巴黎奥运会奖牌数据分析可视化 文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 处理奖牌数据2.3 统计各参数国家/地区奖牌数据 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数…

MQ的介绍

一、MQ简介 MQ全称Message Queue(消息队列)&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信&#xff0c;主要功能业务解耦 二、常见的MQ产品 RabbitMQ、RocketMQ、Kafka、ActiveMQ 三、为什么要用MQ&#xff1f; 3.1、异步处理 应用场景…

苍穹外卖-知识点

搭建环境 前端 使用nginx&#xff08;文件路径带中文 会启动不成功&#xff09; 后端

嵌入式软件开发学习一:软件安装(保姆级教程)

资源下载&#xff1a; 江协科技提供&#xff1a; 资料下载 一、安装Keil5 MDK 1、双击.EXE文件&#xff0c;开始安装 2、 3、 4、此处尽量不要安装在C盘&#xff0c;安装路径选择纯英文&#xff0c;防止后续开发报错 5、 6、 7、弹出来的窗口全部关闭&#xff0c;进入下一步&a…