【计算机基础】VS断点调试,边学边思考

2023-09-22 00:19:32

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


1、什么是断点?与调试有何关系?

🔎断点:断点是一种在代码中设置的标记,用于调试程序。当程序执行到设置的断点处时,程序会暂停执行,这时我们就可以查看程序状态、变量值等信息,以便定位并解决问题。

🔎调试:调试是指通过检查、测试和分析程序来找出并解决程序中的错误或异常行为的过程。

设置断点是调试的一种常用方法,它可以让开发者在特定位置暂停程序执行,以便检查代码的运行情况。当程序执行到断点时,开发者可以观察变量的值、执行路径以及程序流程,帮助排查程序中的bug或异常情况。

2、断点应该打在哪里?

🔎 我们注意到一旦点击开始调试后,程序运行至第一个断点处停下,意味着这个断点之前的语句都已经执行了。

🔎因此,我们打断点的时候应该放在那些不清楚如何执行或是有可能存在bug的地方。断点的设置位置可以根据具体的调试需求来确定。一般来说,断点的设置应该在你希望程序暂停执行以便进行调试、观察或分析的地方。

3、逐语句、逐过程以及跳出的区别

打完断点后我们需要对代码进行调试,其中就有三种调试手段,分别是逐语句、逐过程以及跳出。那么他们之间有什么区别呢?下面以VS2019为例进行说明:

1、逐语句就是断点处后的每一步都会执行

2、逐过程就是会在主函数中一步步执行,不发生跳转。

3、同样,跳出也是仅在主函数中调试,从一个断点跳到下一个断点

视频中我们通过设置函数来举例说明三者的区别:

三个不同的断点调试方式

4、degug和release模式下的调试有什么区别?

🔎在Debug模式下,代码通常被编译为未经优化的可执行文件。这样做的目的是为了方便开发人员进行调试和排错。在Debug模式下,编译器会保留更多的调试信息,如变量名、函数名、源代码行号等。这些信息对于开发人员来说非常有用,因为它们能够在出现问题时提供更详细的错误信息。

🔎而在Release模式下,代码通常会被编译为优化后的可执行文件,以提高程序的性能和执行速度。在这种模式下,编译器会删除大部分调试信息,以减小可执行文件的大小。这意味着在Release模式下,出现错误时可能只会得到一般性的错误信息,而不会提供具体的行号或变量名。
因此需要调试的我们应该选择dubug模式
我们通过视频对比进行直观的说明:

在两种不同模式下的调试区别

5、无断点,调试和执行有无区别?

此外我们通过试验可知在无断点的情况下,其实调试和执行没有什么区别,我们直接点击调试即可。他们都是直接输出结果。

无断点的情况下调试和执行没有什么区别

在这里插入图片描述

更多推荐

Ruoyi-vue项目讲解

@[TOC]若依前后端调用接口解读若依github官方下载地址若依gitee官方下载地址1.验证码时候的前端调用接口调用前端登录界面的时候,调用的是login.vue这个文件中的created函数这里我们查看getCode函数方法可以看到,这里先调用了一个getCodeImg函数,然后接收到后端返回的值之后,再进行相应

Python阴阳历日期转换

阳历转阴(殷)历,阴历转阳历,了解一下阴阳历的转换逻辑、闰月的转换。农历,古时称为夏历,是中国现行的传统历法,属于阴历和阳历的合历,根据月相的变化周期一个月,参考太阳回归年为一年的长度,加入二十四节气与设置闫月平均历年与回归年相适应。--百度百科1.阴阳历偏差计算表参考以下所使用python库中定义的1900~2100

Linux:冯诺依曼系统和操作系统的概念

文章目录冯诺依曼体系结构冯诺依曼体系的理解操作系统操作系统的基本定位操作系统的理解1操作系统的理解2总结本篇主要总结的是操作系统的基本认知和一些概念冯诺依曼体系结构那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先介绍它?截止目前来说,常见的计算机都是遵循着冯诺依曼体系组成的,可以说有了冯诺依曼体系才

Vue中的表单自动完成与下拉选择器

Vue中的表单自动完成与下拉选择器在现代Web应用程序中,表单是不可或缺的一部分,而表单元素的自动完成和下拉选择器是提高用户体验和数据输入效率的重要工具。Vue.js作为一种流行的前端框架,提供了丰富的工具和组件来实现这些功能。在本文中,我们将探讨如何在Vue中实现表单自动完成和下拉选择器,并提供相应的代码示例。表单自

Python协程(asyncio)(一)协程开发

协程的概念协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机,我们可以把一个协程切换到另一个协程。只要这个过程中保存或恢复CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在

Redis实战(10)-一条命令在Redis是如何执行的?

RedisServer一旦和某客户端建立连接,就会在事件驱动框架中注册可读事件,对应客户端的命令请求。整个命令处理过程可分阶段:命令解析,processInputBufferAndReplicate命令执行,processCommand结果返回,addReply1命令读取:readQueryFromClient会从客户

JavaScript 设计模式中的 this、call 和 apply(设计模式与开发实践 P3)

文章目录2.1thisthis作为对象的方法this作为普通函数构造器调用call和apply2.2call和apply修正函数中的this模拟bind函数借用其他对象的方法2.1thisjavascript的this总是指向一个对象,且指向的对象基于函数的执行环境动态绑定,而不是函数声明时的环境this作为对象的方法

【校招VIP】前端JS语言之CSS基础属性

考点介绍CSS全称为CascadingStyleSheets,中文翻译为“层叠样式表”,简称CSS样式表,所以称之为层叠样式表(CascadingStylesheet)简称CSS。在网页制作时采用CSS技术,可以有效地对页面的布局、字体、颜色、背景和其它效果实现更加精确的控制。前端JS语言之CSS基础属性-相关题目及解

联合matlab和Arcgis进行netcdf格式的雪覆盖数据的重新投影栅格

图片摘要本专栏目的是将netcdf格式的雪覆盖数据进行重新投影,需要使用的工具包括matlab和Arcgis,下面进入正题。1.数据的下载与读取---matlab最近我需要读取北半球的冰雪覆盖数据,下载的是MODIS/TerraSnowCoverMonthlyL3Global0.05DegCMG,Version61,文

使用 Pandas 在 Python 中读写 JSON 文件

介绍Pandas是最常用的数据处理和可视化Python库之一。Pandas库提供了可用于高效读取、操作和可视化以各种文件格式存储的数据的类和功能。在本文中,我们将使用Python和Pandas读取和写入JSON文件。什么是JSON文件?JavaScript对象表示法(JSON)是一种以人类可读形式存储数据的数据格式。虽

Git:利用Git模拟企业级项目管理

文章目录基础知识Git分支设计规范master分支release分支develop分支feature分支hotfix分支模拟进行企业级项目管理本篇主要总结的是企业级开发模型以及利用Git模拟企业级别的项目管理方式基础知识前面已经进行了全部的关于Git的各项操作,那么Git是作用于企业项目管理的,因此了解企业是如何进行项

热文推荐