VS2022调试技巧(一)

  • 什么是bug?

在1945年,美国科学家Grace Hopper在进行计算机编程时,发现一只小虫子钻进了一个真空管,导致计算机无法正常工作。她取出虫子后,计算机恢复了正常,由此,她首次将“Bug”这个词用来描述计算机系统中的问题。

  • 什么是Debug?

DEBUG是一个用于程序调试的工具,主要用于发现和修复计算机程序中的错误、缺陷或故障。它允许程序员检查内存中任何位置的字节,并可以修改这些字节的值。通过使用DEBUG,程序员可以逐指令执行程序,验证程序的正确性,追踪程序的执行过程,比较指令执行前后的值,以及读写文件和磁盘扇区等。

  • Debug和Release模式的差别?

1.调试信息:Debug模式包含详细的调试信息,如变量名、行号等,这有助于程序员在调试过程中定位问题。而Release模式则不包含这些信息,以优化程序的大小和运行效率。

2.优化:Release模式会对代码进行优化,以提高程序的运行效率。这可能包括去除无用代码、压缩存储和加速代码执行等。而Debug模式则不会对代码进行优化,以便程序员能够更轻松地调试和诊断问题。

3.运行速度:由于Release模式对代码进行了优化,因此生成的程序通常比Debug模式下的程序运行速度更快。Debug模式下的程序由于包含了调试信息和没有进行优化,通常较大且运行速度较慢。

4.错误报告:Debug模式通常会提供更详细的错误报告,帮助程序员更容易地识别代码中的问题。而Release模式则可能不提供这些详细的错误报告,以减少程序的大小和提高运行效率。

5.安全性:Release模式通常用于发布最终产品,因此在生成的可执行文件中不会包含调试信息,这有助于保护代码的安全性和知识产权。

  • 如何进行调试?

1.添加断点:在想要暂停的代码行号后面单击鼠标左键,这样就可以在指定的代码位置设置断点。根据个人需求可以同时添加多个断点。

2.启动DEBUG模式:右键点击选择调试程序(debug)。此时,程序将在断点处暂停执行。

3.进入调试窗口:在调试窗口中,可以看到程序执行到断点处时停住,右边可以看到当前所在的方法,以及程序中变量值的变化。

4.执行代码:点击“步入”按钮,可以执行当前暂停处的语句。执行后,程序将停在下一行的断点处,同时变量值也会相应更新。

5.观察变量值:在调试过程中,可以观察程序中变量的变化情况,从而判断程序的执行流程是否正确。

6.清除断点:断点可以在调试完成后清除。选择要删除的断点,单击鼠标左键即可。

  • 快捷键以及说明:

F5:直接跳到下一个断点

比如下列代码:在调试时候想要直接结束第一个循环,进入下一个循环,那么只需要单击取消1361行的端点,然后按F5即可。

F10:通常在调试有函数代码中使用,如果不想进入该函数,逐过程可以直接跳过该函数,不进入函数内部,直接进入下一条语句。

此时端点停留在1353行,如果不想进入bubble_sort中,可以按F10跳过该函数执行1354行代码。

F11:逐语句就是逐条语句执行,碰到函数会进入函数内部。如果在上面1353行按下F11,则就会进入bubble_sort函数内部,如下:

Shift+F11:调试时,进入函数内部,想要直接执行完函数(跳出函数),执行下一条语句时使用。比如上面截图中代码执行到627行,如果想要直接跳出,则只需要按下Shift+F11,就可以跳出函数,如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跳房子 Ⅰ(C语言)

题目来自于博主算法大师的专栏:最新华为OD机试C卷AB卷OJ(CJavaJSPy) https://blog.csdn.net/banxia_frontend/category_12225173.html 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏。 游戏参与者需要分多个回…

Go语言必知必会100问题-06 生产者端接口

生产者端接口 Go语言必知必会100问题-05 接口污染中介绍了程序中使用接口是有价值的。在编码的时候,接口应该放在哪里呢?这是Go开发人员经常有误解的一个问题,本文将深入分析该问题。 在深入探讨问题之前,先对提及的术语做一个定…

2024年老薛主机开工大吉活动:云服务器5折起,续费同价!

2024年老薛主机开工大吉活动开始了,香港/美国云服务器季付7折,半年付6折,年付5折,续费同价! 活动地址: 点此直达老薛主机官网 活动详情: 老薛主机2024开年促销活动,香港/美国云服…

全网最全AI绘画工具汇总(二)

一.AI绘画 图像 创造人工智能艺术的方式共有多种方法,包括使用数字模式的程序“基于规则”的图像生成、模拟笔触和其他绘画效果的算法,以及人工智能或深度学习算法等。 最早的重要人工智能艺术系统之一是AARON,由哈罗德科恩于1960年代末开…

Pytorch添加自定义算子之(1)-安装配置Eigen库

一、安装对应的ubuntu环境 推荐使用Docker FROM nvcr.io/nvidia/pytorch:23.01-py3 RUN pip install tensorboardX RUN pip install pyyaml RUN pip install yacs RUN pip install termcolor RUN pip install opencv-python RUN pip install timm0.6.12 WORKDIR /app COPY . …

【LeetCode:2476. 二叉搜索树最近节点查询 + 中序遍历 + 有序表】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

vDPA测试环境搭建

要求: 运行 Linux 发行版的计算机。本指南使用 CentOS 9-stream,但对于其他 Linux 发行版,特别是对于 Red Hat Enterprise Linux 7,命令不应有重大变化。 具有 sudo 权限的用户 ~ 主目录中有 25 GB 的可用空间 至少 8GB 内存 …

蓝桥杯-扫雷

代码解答及思路: #include <iostream> using namespace std; int main() { int n,m; int a[100][100] {0},b[100][100];//记住要开数组确数 &#xff0c;这样外围就会有边 &#xff0c;不能直接设置值&#xff0c;要记住&#xff01;&#xff01;&#xff01;&#…

FairyGUI × Cocos Creator 3.x 场景切换

前言 前文提要&#xff1a; FariyGUI Cocos Creator 入门 FairyGUI Cocos Creator 3.x 使用方式 个人demo&#xff1a;https://gitcode.net/qq_36286039/fgui_cocos_demo_dust 个人demo可能会更新其他代码&#xff0c;还请读者阅读本文内容&#xff0c;自行理解并实现。 官…

模版(初级)

一.泛型编程 当我们要写一个交换函数时&#xff0c;面对不同的类型&#xff0c;我们可能就需要向如下这么写&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double tem…

【linux】常见指令 -通配符,数据管道,重定向,压缩打包...

目录 前言 基本指令 ls命令 常见选项 ​编辑 pwd命令 cd 指令 常见选项 touch指令 mkdir指令 常见选项 rm 指令 常见选项 man指令 cp指令 常用选项&#xff1a; mv指令 常用选项 nano指令 如何写入且执行文件&#xff1f; cat指令 常用选项 more指令…

RPA超级自动化、AIGC大模型、低代码、流程挖掘四大热门峰会火热报名中!

由企智未来科技&#xff08;RPA中国、LowCode低码时代、AIGC开放社区&#xff09;主办的第四届「ISIG中国产业智能大会」将于2024年3月16日在上海召开&#xff0c;本届主题为“与科技共赢&#xff0c;与产业共进”。在此次大会中&#xff0c;我们将设立RPA超自动化、低代码/零代…

【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; OpenCV开发痛点 传统图像算法开发最好的开源解决方案是OpenCV视觉库&#xff0c;但是OpenCV中收录了2000的传统算法&#xf…

鸿蒙 渲染控制

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 1.概念 ArkUI通过自定义组件的build()函数和builder装饰器中的声明式UI描述语句构建相应的UI。在声明式描述语句中开发者除了…

Linux笔记--硬链接与软链接

一、硬链接 1.inode和block 文件包含两部分数据&#xff1a;文件属性和实际内容&#xff0c;属性放在inode中&#xff0c;实际内容放在data block中。还有个超级区块&#xff08;superblock&#xff09;记录整个文件系统的整体信息&#xff0c;包括inode和block的总量&#x…

基于huggingface加载openai/clip-vit-large-patch14-336视觉模型demo

文章目录 引言一、模型加载二、huggingface梯度更新使用三、图像处理四、模型推理五、整体代码总结 引言 本文介绍如何使用huggingface加载视觉模型openai/clip-vit-large-patch14-336&#xff0c;我之所以记录此方法源于现有大模型基本采用huggingface库来加载视觉模型和大语…

【办公类-22-10】周计划系列(5-2)“周计划-02源文件docx读取5天“ (2024年调整版本)

背景需求 承接上文&#xff0c;继续制作周计划 【办公类-22-09】周计划系列&#xff08;5-1&#xff09;“周计划-01源文件统一名称“ &#xff08;2024年调整版本&#xff09;-CSDN博客文章浏览阅读76次。【办公类-22-09】周计划系列&#xff08;5-1&#xff09;“周计划-01…

LabVIEW燃料电池船舶电力推进监控系统

LabVIEW燃料电池船舶电力推进监控系统 随着全球经济一体化的推进&#xff0c;航运业的发展显得尤为重要&#xff0c;大约80%的世界贸易依靠海上运输实现。传统的船舶推进系统主要依赖于柴油机&#xff0c;这不仅耗能高&#xff0c;而且排放严重&#xff0c;对资源和环境的影响…

2.25 day5 QT

闹钟 .h代码 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJ…

【Linux操作系统】死锁 | 预防、避免死锁

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…