当前位置: 首页 > news >正文

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的值:

常见的错误归类

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

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

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

相关文章:

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

调试的重要性 在我们写代码的时候&#xff0c;如果程序出现了bug&#xff0c;那么下一步就是找到bug并修复bug!而这个找问题的过程就被称为调试&#xff08;英文叫debug&#xff0c;消灭bug的意思&#xff09;。 调试能观察到程序内部执行的细节&#xff0c;可以增加程序员对…...

怎样卸载python

python卸载干净的具体操作步骤如下&#xff1a; 1、首先打开电脑左下角开始菜单&#xff0c;点击“运行”选项&#xff0c;输入“cmd”。 2、输入“python --version”&#xff0c;得到一个程序的版本&#xff0c;按回车键。 3、点击下图程序。 4、然后在该页面中点击“uninst…...

SQL注入靶场攻击——sqli-labs

一、概述 SQL注入&#xff08;SQL Injection&#xff09;是发生在web程序中数据库层的安全漏洞&#xff0c;是比较常用的网络攻击方式之一&#xff0c;它不是利用操作系统的BUG来实现攻击&#xff0c;而是针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号…...

Conda 环境打包与私有化部署指南

Conda 环境打包与私有化部署指南 本指南旨在帮助用户将已创建的 Conda 环境打包并在目标服务器上私有化部署&#xff0c;适用于环境不能直接访问外网或需要快速迁移的场景。 1. 环境打包 在源服务器上&#xff0c;使用 conda pack 工具将已创建的 Conda 环境打包成一个归档文…...

网页版IntelliJ IDEA部署

在服务器部署网页 IntelliJ IDEA 引言 大家好&#xff0c;我是小阳&#xff0c;今天要为大家带来一个黑科技——如何在云端部署和使用WEB版的IntelliJ IDEA&#xff0c;让你在任何地方都可以随心所欲地进行Java开发。这个方法特别适合那些用着老旧Windows电脑&#xff0c;部署…...

科创微应用平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;场地信息管理&#xff0c;场地类型管理&#xff0c;预约参观管理&#xff0c;场地预约管理&#xff0c;活动信息订单&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首…...

grom接入Prometheus,grafana

在同级目录下分别创建 docker-compose.yml&#xff0c;与prometheus.yml 配置文件 version: 3.8services:prometheus:image: prom/prometheuscontainer_name: prometheusports:- "9090:9090" # Prometheus Web UI 端口volumes:- ./prometheus.yml:/etc/prometheus…...

C++结构体指针强制转换以处理电力系统IEC103报文

前言 最近依旧是开发规约解析工具的103篇&#xff0c;已经完成了通用分类服务部分的解析&#xff0c;现在着手开始搞扰动数据传输&#xff0c;也就是故障录波的传输。 在103故障录波&#xff08;扰动数据&#xff09;的报文中&#xff0c;数据是一个数据集一个数据集地存放&a…...

vue3.0脚手架、路由、Element Plus安装案例:收录于Vue 3.0 后台管理系统案例

目录 环境配置 Vue 3.0 脚手架&#xff08;Vite&#xff09;安装 node版本查询与切换 创建一个vue应用 Vue Router安装 安装vue-router4 配置路由 安装配置 展示路由 Element UI安装 安装element-plus 引入element-plus 使用element-plus 用户登录 环境配置 Vue 3…...

JS中原型相关的十个知识点总结

JavaScript 中的原型&#xff08;Prototype&#xff09;是理解对象和继承机制的核心概念。以下是我对 JavaScript 原型相关知识点的总结和详细讲解&#xff1a; 1. 原型对象&#xff08;Prototype Object&#xff09; 在 JavaScript 中&#xff0c;每个对象都有一个关联的对象…...

使用DevKit套件调优 --未完

基于鲲鹏开发板使用DevKit套件调优 鲲鹏开发板平台使用体验 我们使用的硬件平台是Orange Pi Kunpeng Pro,外观如下图 我们看到我们的Orange Pi 颜值相当的高&#xff0c;我们使用远程连接后就能看见我们非常漂亮的openEuler的桌面。 openEuler操作系统已经预装好了&#xf…...

Vue3+ElementUI中的Table组件的使用

Vue3ElementUI中的Table组件的使用 校验表格内多个输入框校验 表格滚动到底部 校验 表格内多个输入框校验 注意prop如何写。实现&#xff1a;一旦输入框内部有更改&#xff0c;清空校验&#xff1b;实现&#xff1a;自定义校验错误提示信息样式&#xff1b;实现&#xff1a;在…...

Highcharts 条形图:数据可视化的利器

Highcharts 条形图:数据可视化的利器 引言 在数据分析和可视化领域,Highcharts 是一个广受欢迎的 JavaScript 图表库。它以其易用性、灵活性和丰富的图表类型而著称。其中,条形图作为一种基础但功能强大的图表类型,被广泛应用于各种场景,以直观地展示数据分布和比较。本…...

嵌入式初学-C语言-二四

Void与void*的区别 定义&#xff1a; Void&#xff1a;空类型&#xff0c;是数据类型的一种 Void*&#xff1a;是指针类型&#xff0c;是指针类型的一种&#xff0c;可以匹配任何类型的指针&#xff0c;类似于通配符 Void 说明&#xff1a;void作为返回值类型使用&#xf…...

tcpdump入门——每种flag分别表示什么意思

在 tcpdump 的输出中&#xff0c;TCP 标志位&#xff08;Flags&#xff09;通常用简写字符表示。以下是每种 TCP 标志位的含义及其对应的简写字符&#xff1a; TCP 标志位及其简写 SYN (Synchronize) 作用&#xff1a;用于初始化连接。简写字符&#xff1a;S ACK (Acknowledgm…...

Qt如何封装工具

在Qt中封装工具类或库是一种常见的开发模式&#xff0c;通过封装可以提高代码的可重用性、可维护性和模块化。以下是封装工具类的一些步骤和最佳实践&#xff1a; ### 1. 创建工具类 首先&#xff0c;创建一个新的C类作为你的工具类。在Qt Creator中&#xff0c;可以通过右键点…...

vue3进阶用法之通过调用函数动态加载组件用法及示例

业务场景 假设现在有一个可能在全局任何地方调用的vue组件你会怎么办&#xff1f;非常简单&#xff0c;在app.vue下的router-view同级写上这个组件&#xff0c;在全局中加一个变量v-if判断这个变量就解决了&#xff01; tempalte中 <div><router-view /><You…...

线程和进程的关系

计算机是如何运行的&#xff1f;CPU 操作系统 进程管理 CPU 多核心 充分利用-> 并发编程&#xff0c;并发执行就算分时复用&#xff0c; 包括多进程编程。 多进程编程进程太重&#xff0c;创建进程&#xff0c;销毁进程开销比较大 &#xff0c;不利于频繁创建销毁进程&…...

《AI视频类工具之十二——​ EbSynth》

一.简介 官网:https://ebsynth.com/?ref=ai-bot.cn EbSynth是一款功能强大的视频风格转换工具,它利用先进的图像处理和计算机视觉技术,将静态艺术风格应用到视频中的每一帧,为视频创作者提供了全新的创作方式。 二.功能介绍 主要功能 视频转换:EbSynth 可以将视频转换…...

Facebook国内企业户、海外户、国内二不限户以及三不限户区别何在?

Facebook广告账户的类型和设置对于企业在不同市场中的广告活动至关重要。了解国内企业户、海外企业户&#xff0c;以及国内二不限户和三不限户的区别&#xff0c;可以帮助你更好地选择和管理广告账户。以下是对这些账户类型的详细解析。 一、Facebook海外企业广告账户 海外企业…...

HiveWE:现代化魔兽争霸III地图编辑器完全指南

HiveWE&#xff1a;现代化魔兽争霸III地图编辑器完全指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版地图编辑器缓慢的加载速度和复杂的操作而烦恼吗&#xff1f;HiveWE作为一款专…...

M4Markets:技术架构稳健性的多角度观察

在金融服务行业不断深化的当下&#xff0c;平台的综合实力已经成为客户筛选时的关注焦点。M4Markets作为活跃在国际金融领域的服务机构&#xff0c;多年来在多个维度展现出较为突出的特点。本文将从评测视角出发&#xff0c;对其综合表现进行多维度的观察与解读&#xff0c;希望…...

跨设备游戏串流终极方案:Sunshine开源服务器高效解决游戏共享难题

跨设备游戏串流终极方案&#xff1a;Sunshine开源服务器高效解决游戏共享难题 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine作为一款自托管的开源游戏串流服务器&#x…...

从图像到十字绣:基于颜色量化与DMC匹配的自动化绣图生成技术

1. 项目概述&#xff1a;从代码仓库到十字绣艺术的数字桥梁最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫suads463/xstitch。光看名字&#xff0c;你可能会有点摸不着头脑&#xff0c;suads463显然是作者的用户名&#xff0c;而xstitch这个缩写&#…...

手势传感器技术:原理、实现与应用解析

1. 手势传感器技术解析&#xff1a;从原理到实现手势传感器本质上是一种基于光学原理的交互设备&#xff0c;其核心技术在于利用红外光的发射与接收来捕捉用户手势动作。与传统的电容式触摸技术不同&#xff0c;手势传感器通过主动发射红外光并测量反射信号的变化&#xff0c;实…...

FPGA电源系统设计与线性/开关稳压器应用指南

1. FPGA电源系统设计基础在数字系统设计中&#xff0c;FPGA因其可编程性和高性能已成为现代电子系统的核心器件。随着工艺技术进步&#xff0c;当代FPGA集成了数百万逻辑门、高速收发器、锁相环和专用处理单元&#xff0c;这些复杂模块对供电系统提出了严苛要求。一个典型的Xil…...

16Gb容量+1866Mbps速率:NT6CL512T32AM-H1的LPDDR3移动存储参数解析

NT6CL512T32AM-H1&#xff1a;16Gb LPDDR3移动DRAM的技术解析在移动计算、工业嵌入式以及车载信息娱乐等对功耗和性能双重敏感的应用领域&#xff0c;内存子系统的选择直接影响产品的续航能力和数据处理效率。NT6CL512T32AM-H1是南亚科技推出的一款16Gb LPDDR3 SDRAM&#xff0…...

科研人员实用:OpenClaw批量下载文献、整理参考文献格式,自动生成论文引用列表

科研利器&#xff1a;OpenClaw——自动化文献下载、格式整理与引用列表生成实战指南摘要 在科研工作中&#xff0c;文献的收集、管理与引用是耗时耗力的关键环节。面对海量的学术资源&#xff0c;如何高效地批量下载所需文献、规范整理参考文献格式、并快速生成符合要求的论文引…...

3步自动化优化:智能管理Cursor AI开发环境的革命性方案

3步自动化优化&#xff1a;智能管理Cursor AI开发环境的革命性方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tr…...

【NotebookLM NLP辅助天花板级用法】:谷歌内部未公开的3类Prompt架构+2个隐藏API调用技巧

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM NLP任务辅助全景概览 NotebookLM 是 Google 推出的基于用户自有文档的实验性 AI 助手&#xff0c;专为研究者与工程师设计&#xff0c;其核心能力在于对上传文本进行深度语义理解与上下文感…...