Visual studio调试技巧

ops/2024/9/24 7:47:39/

Visual studio调试技巧

  • bug是什么?
  • Debug和Release
    • Debug
    • Release
  • 如何调试
  • VS调试快捷键
  • 调试过程中查看程序信息
    • 查看临时变量的值
    • 查看内存信息
    • 查看调用堆栈
    • 查看汇编信息
    • 查看寄存器信息
  • 编译常见错误
    • 编译型错误
    • 链接型错误
    • 运行时错误

bug是什么?

  • bug的英文释义为“臭虫、虫子”,现在人们将在电脑系统或者程序中隐藏着一些未被发现的缺陷和问题统称为bug。

人类历史上第一个计算机程序bug就是和“虫子”有关。
有⼀位为美国海军⼯作的电脑专家叫格蕾丝·赫柏(Grace Murray Hopper),格蕾丝·赫柏1947年9⽉9⽇对Harvard Mark II设置好17000个继电器进⾏编程后,技术⼈员正在进⾏整机运⾏时,它突然停⽌了⼯作。于是他们爬上去找原因,发现这台巨⼤的计算机内部⼀组继电器的触点之间有⼀只⻜蛾,这显然是由于⻜蛾受光和热的吸引,⻜到了触点上,然后被⾼电压击死。所以在报告中,赫柏⽤胶条贴上⻜蛾,并把“bug”来表⽰“⼀个在电脑程序⾥的错误”,“Bug”这个说法⼀直沿⽤到今天。

  • Bug的官方释义:是用于描述计算机程序或系统中的错误,缺陷,错误,故障或错误的常见术语,该错误,缺陷,错误,故障或错误会导致产生错误或意外的结果,或导致其行为异常。大多数错误是由于人们在程序的源代码或其设计中所犯的错误和错误引起的,而一些错误则是由编译器生成的错误代码引起的。包含大量错误和/或严重干扰其功能的错误的程序被认为是错误的。详细说明程序中错误的报告通常称为错误报告,故障报告,问题报告,故障报告,变更请求等。——来自维基百科

Debug和Release

Debug和Release

Debug

  • Debug被称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试。
    Debug

  • Debug(调试)的官方释义:是一种有条理的过程,可以发现并减少计算机程序或电子硬件中的错误或缺陷数量,从而使其表现出预期的效果。当各个子系统紧密耦合时,调试会变得更加困难,因为一个子系统中的更改可能会导致另一个子系统中出现错误。已经编写了许多有关调试的书籍,因为它涉及许多方面,包括:交互式调试,控制流,集成测试,日志文件,监视,内存转储,统计过程控制,以及改进检测并简化更改的特殊设计策略。——来自维基百科

Release

  • Release被称为发布版本,它往往进行了各种优化,使得程序在代码大小和运行速度上都达到最佳,以便用户更好的使用。

Release

如何调试

  • 调试:又称除错,是发现和减少计算机程序电子仪器设备中程序错误的一个过程。

调试的基本步骤:
1.发现程序错误的存在
2.以隔离、消除等方式对错误进行定位
3.确定错误产生的原因
4.提出纠正错误的解决办法
5.对程序错误予以改正,重新测试

VS调试快捷键

  • Visual studio是一个集成开发环境,简称IDE,它是集成了编辑器、编译器和调试器。(在Linux环境下,gcc是编译器,gdb是调试器)
  • 下面简绍几个在调试过程中常见的vs快捷键

F9:创建断点,取消断点

F9

  • 断点的作用是可以在程序任意位置创造断点,在想让程序停留的地方打上断点,程序暂停执行后可以配合其他快捷键进行调试。

F5:启动调试,经常用来直接跳到下一个断点处。

F9

F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句

F10

F11:逐语句,即每一次都执行一条语句,最为主要的是这个快捷键可以进入函数内部

F11

ctrl+F5:开始执行不调试,在想让程序执行起来,而非调试可以直接使用

ctrl+F5

调试过程中查看程序信息

  • 在查看调试过程中的程序信息时,必须先要开始调试即F10

查看临时变量的值

查看临时变量的值

查看内存信息

查看内存信息

查看调用堆栈

查看调用堆栈

查看汇编信息

查看汇编信息

查看寄存器信息

查看寄存器信息

编译常见错误

编译型错误

  • 编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝⻢迹的,双击错误信息也能初步的跳转到代码错误的地⽅或者附近

链接型错误

  • 链接型错误一般原因是因为标识符名不存在,拼写错误,标识符不存在或者引用的库不存在等原因

运行时错误

  • 运行时错误时程序员在编写程序时,为根据自身所想而产生的错误,需要用调试解决

http://www.ppmy.cn/ops/33088.html

相关文章

C语言实战项目--贪吃蛇

贪吃蛇是久负盛名的游戏之一,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的行列。在编程语言的教学中,我们以贪吃蛇为例,从设计到代码实现来提升大家的编程能⼒和逻辑能⼒。 在本篇讲解中,我们会看到很多陌生的知识&…

深入浅出 BERT

Transformer 用于学习句子中的长距离依赖关系,同时执行序列到序列的建模。 它通过解决可变长度输入、并行化、梯度消失或爆炸、数据规模巨大等问题,比其他模型表现更好。使用的注意力机制是神经架构的一部分,使其能够动态突出显示输入数据的…

vue 设置输入框只能输入数字且只能输入小数点后两位,并且不能输入减号

<el-input v-model.trim"sb.price" placeholder"现价" class"input_w3" oninput"valuevalue.replace(/[^0-9.]/g,).replace(/\.{2,}/g,.).replace(/^(\-)*(\d)\.(\d\d).*$/,$1$2.$3)"/> 嘎嘎简单、、、、、、、、、

自动化软件的开发流程——CI和CD

在软件开发过程中&#xff0c;最容易出问题的阶段是将多个开发者开发的程序统一到一起的时候。即使每个程序都进行了严格的测试&#xff0c;运行起来没有问题&#xff0c;但是将它们作为一个统一的系统运行时&#xff0c;就有可能出现无法正常执行的情况。 如果能够在早期发现…

ETL工程师介绍

ETL工程师是负责ETL&#xff08;Extract, Transform, Load&#xff09;过程的专业人员。ETL是数据仓库和数据集成的关键组成部分&#xff0c;用于从多个不同的数据源中提取数据&#xff0c;对数据进行转换和清洗&#xff0c;最后加载到目标数据存储中。 ETL工程师的主要职责包…

python面试算法题

在给大家来一道算法题&#xff0c;很经典的算法题&#xff0c;希望大家从这个算法题中能学到更多东西&#xff0c;以及逻辑上的东西&#xff0c;喜欢的小伙伴点赞收藏 def isValid(s):stack []mapping {): (, }: {, ]: [}for char in s:if char in mapping:top_element sta…

MySQL面试题:经典面试题之“B+树”

在MySQL数据库领域&#xff0c;B树是一个经典的数据结构&#xff0c;它在数据库索引中发挥着重要的作用。本文将深入探讨B树的概念、特点以及在MySQL中的应用&#xff0c;帮助程序员更好地理解和掌握这一重要的数据结构。 1. B树的概念 B树是一种平衡的多路搜索树&#xff0c…

淘宝商品数据接口:用于获取商品价格详情图片信息(商品采集API)

taobao.item_get 获取API请求地址 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]c…