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

news2024/9/20 9:37:45

调试的重要性

在我们写代码的时候,如果程序出现了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.coloradmin.cn/o/2041528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5大低代码开源平台案例研究

在当今快速发展的数字化时代&#xff0c;企业面临着越来越复杂的技术挑战和市场竞争。为了保持竞争力并加速业务创新&#xff0c;许多公司正在转向低代码开源平台。然而&#xff0c;选择合适的低代码平台并将其成功实施&#xff0c;依然是一个挑战。 本文将深入探讨五个成功案…

OpenAI gym: How to get pixels in CartPole-v0

题意&#xff1a;OpenAI Gym&#xff1a;如何在 CartPole-v0 中获取像素&#xff1f; 问题背景&#xff1a; I would like to access the raw pixels in the OpenAI gym CartPole-v0 environment without opening a render window. How do I do this? 我想在 OpenAI Gym 的 …

RAC11G场景下OLR文件丢失导致节点GI无法启动

环境说明 RHEL7.911.2.0.4 RAC&#xff0c;双节点。 问题描述 巡检发现节点2的GI无法启动&#xff0c;发现是olr文件丢失导致。 问题复现 故意把OLR删掉&#xff0c;重启后发现GI无法启动 查看/etc/oracle/olr.loc --查看/etc/oracle/olr.loc 该文件记录有olr文件位置和…

密探 -- 渗透测试工具 v1.14 版

1.如何运行 在jdk8环境下&#xff08;在jdk8以上的高版本请参考常见问题1的处理方案&#xff09;运行以下语句运行: java -jar mitan-jar-with-dependencies.jar 若不想输入这么长太长语句&#xff0c;可以通过以下脚本的方式启动&#xff1a; Mac/Linux 环境下&#xff0c;…

计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)

运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时&#xff0c;都要使用协议栈中的运输层&#xff1b;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1&#xff1a;我们…

【最短路径算法】

每日格言&#xff1a;想去的地方很遥远&#xff0c;我们也只能自己走 前言 最短路径算法是一类用于解决图中两点间寻找最短路径问题的算法。这里我们只具体介绍利用matlab中的函数实现&#xff0c;迪克斯特拉算法和弗洛伊德算法大家有兴趣可上网了解一下。这类算法在多个领域都…

安全稳定的镭速高端制造业文件传输摆渡系统

在现代制造业的高速发展中&#xff0c;高端制造领域尤为依赖高效的文件传输系统&#xff0c;这类系统不仅促进了企业内部的合作&#xff0c;还加强了与合作伙伴的紧密联系&#xff0c;成为推动创新和决策的关键因素。镭速文件传输系统正是为了满足这一需求而设计&#xff0c;其…

KamaCoder 102. 沉没孤岛

题目描述&#xff1a; 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域&#xff0c;且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿…

如何做好小程序评论优化

用户在决定要不要用一个小程序时&#xff0c;往往会参考其他用户的评分和评论。因此小程序评论优化是提升用户互动和口碑传播的关键环节。以下是一些针对小程序评论优化的具体策略&#xff1a; 1. 优化评论区设计 确保用户能够轻松找到并访问评论区。可以在小程序的显眼位置设…

netassist TCP测试工具使用

写在前面 有时工作中我们编写一些tcp相关的程序&#xff0c;而netassist就是这样一款辅助我们进行TCP功能测试的工具&#xff0c;你可以从这里下载。 1&#xff1a;使用 我们需要一个server程序&#xff0c;可以参考这篇文章&#xff0c;启动server后&#xff0c;就可以使用…

集美大学携手和鲸与龙船,深化“航运+AI”学科建设,赋能航海人才培养

“闽国扬帆去&#xff0c;蟾蜍亏复圆。” ——唐贾岛 《忆江上吴处士》 人类探索海洋的脚步从未停止。昔日&#xff0c;闽地的先民眺望浩瀚大海&#xff0c;叹其无垠难测&#xff1b;如今&#xff0c;海洋科学与人工智能的交叉融合正引领着新一轮的探索浪潮&#xff0c;成为不…

智能学习系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的智能学习系统应运而生&#xff0c;各行各业相继进入信息管理时…

高性价比运动耳机有哪些?五大高性价比运动耳机分享

对于很多人来说&#xff0c;音乐都是日常生活中不可或缺的一部分&#xff0c;在路上随处可见戴着耳机的人打发无聊的时间。相对于传统的入耳式耳机来说&#xff0c;市面上涌现了一批开放式耳机&#xff0c;它们凭借其开放不塞耳的特性&#xff0c;能够适应多种场景&#xff0c;…

telegraf、influxdb、grafana安装配置

InfluxDB&#xff08;时序数据库&#xff09;&#xff0c;常用的一种使用场景&#xff1a;监控数据统计。 grafana&#xff0c;用作监控页面的前端展示。 telegraf&#xff0c;数据采集器。 一、Influxdb安装及配置 下载&#xff1a;wget https://dl.influxdata.com/influx…

RFID无线测温系统,守护电厂安全运行的关键力量

一、RFID无线测温系统概述 RFID无线测温系统主要由传感器、数据传输装置和监控中心三部分组成。 传感器是系统的感知前端&#xff0c;通常采用RFID技术&#xff0c;能够实时感知温度变化。例如&#xff0c;在一些应用中&#xff0c;RFID传感器可以安装在电力设备的关键部位&a…

【Python快速入门和实践014】Python常用脚本-批量重命名指定文件夹下文件名字

一、功能讲解 这段代码是一个用于批量重命名文件的Python脚本。它的主要功能是在文件名前添加一定数量的前导零&#xff0c;使得所有文件名的长度保持一致。这对于管理大量文件&#xff0c;特别是当文件名需要按照特定顺序排列时非常有用。 导入必要的模块&#xff1a; os: 用于…

SiLM5932SHO系列SiLM5932SHOCG-DG 12A/12A强劲驱动电流能力 支持主动短路保护功能(ASC)单通道隔离门极驱动器

SiLM5932SHO系列是一款单通道隔离驱动器&#xff0c;提供12A源电流和12A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 4A 米勒钳位。输入侧电源的工作电压为3V至5.5V&#xff0c;输出侧电源的工作电压范围为13V至30V。所有电源电压引脚都有欠压锁定 (UVLO) 保…

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息 package mainimport ("fmt""regexp""github.com/StackExchange/wmi""github.com/shirou/gopsutil/v3/disk" )// 定义 WMI 类结构体 type Win32_LogicalDiskToPartition struct {Ant…

Alleviating Hallucination in Multi-Modal Large Language Models

OPERA: Alleviating Hallucination in Multi-Modal Large Language Models via Over-Trust Penalty and Retrospection-Allocation 文章汇总 当前的问题发现 如图&#xff0c;在模型生成幻觉内容时&#xff0c;最后一层的 Self-Attention 权重大概率会在幻觉部分之前呈现出明…

【el-table】横向滚动条加粗后,滚动到固定列下被遮挡,已解决

横向滚动条按要求加粗后&#xff0c;遇到的问题&#xff1a;列表的操作列是固定在最右侧的&#xff0c;当滚动条滑动到最右侧的时候&#xff0c;滚动条被遮挡了 我尝试了几种方法都不行&#xff0c;比如找到.el-table__fixed-right .el-table__fixed-footer-wrapper &#xff…