bug的定义以及VS调试方法

简介: bug的定义以及VS调试方法

1.bug是什么?

我们在敲代码,甚至是在游戏或者生活场景中,经常会说我们遇到bug了。那么bug究竟是个什么东西呢?

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

bug的意思就是指程序漏洞,是需要修复的。

2.debug是什么?

在bug前加一个de,它的意思就是解决bug,也就是看作调试的意思,相当于一个找到bug并解决它的过程。

3.debug与release

这是在vs中的两种不同的版本模式。

debug调试版本就是程序员用来调试自己代码的版本

release发布版本就是程序员发布出去的代码版本,通常这个版本的代码进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的,使得用户能有更好的使用体验。同时release版本不能进行调试。

它俩有个很显著的区别就是内存大小,debug版本远大于release版本。

4.vs的调试以及快捷键

调试是有快捷键的。

F9:创建和取消断点。

图中这个红色的点就是断点,断点的作⽤是可以在程序的任意位置被设置,打上断点就可以使得程序执⾏到想要的位置暂定执⾏,接下来我们就可以使⽤F10,F11这些快捷键,观察代码的执⾏细节。

F5:其实就是平常的运行键,也就是继续运行,不中断,直到遇到断点。通常和F9一起使用。图中那个箭头表示在按F5运行之后遇到断点停了下来。

F10:是逐过程运行,也是一次运行一条语句,但遇到子函数调用时不进入,直到子函数完成后直接继续。图中箭头就是开始调试的地方,而当按一次F10之后它只会向下继续调试一行,而不会像F5那样一直向下运行

F11:是逐语句运行,和F10的区别是,当遇到函数时会进入其内部继续进行调试。而F10会直接完成函数调用。图中可以看出在按下F11之后进入了函数中调试。

VS中常用的快捷键_vs快捷键-CSDN博客这篇博客里详细介绍了vs的一系列快捷键。

5.监视

如果我们在调试中想要查看每个变量的具体数据变化,那么就要用到监视。

在监视中输入我们想要监视的变量,然后在调试时变量的不同参数就会跟着发生变化。

6.内存

除了监视基本的数值,我们还可以查看内存的情况。

在地址栏输入要查看内存的变量,就会自动定位到该地址。

7.编程常见错误分类

编译型错误:编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝⻢迹的,双击错误信息也 能初步的跳转到代码错误的地⽅或者附近。编译错误,随着语⾔的熟练掌握,会越来越少,也容易解决。

链接型错误:看错误提⽰信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。⼀般是因为

• 标识符名不存在

• 拼写错误

• 头⽂件没包含

• 引⽤的库不存在

运行时错误:运⾏时错误,是千变万化的,需要借助调试,逐步定位问题,调试解决的就是运⾏时问题。

目录
相关文章
IDEA 出现问题:IDEA Shift+shift 万能搜索你也有失效的时候
IDEA 出现问题:IDEA Shift+shift 万能搜索你也有失效的时候
1255 0
IDEA 出现问题:IDEA Shift+shift 万能搜索你也有失效的时候
|
5月前
|
机器学习/深度学习 负载均衡 C++
MoR vs MoE架构对比:更少参数、更快推理的大模型新选择
本文将深入分析递归混合(MoR)与专家混合(MoE)两种架构在大语言模型中的技术特性差异,探讨各自的适用场景和实现机制,并从架构设计、参数效率、推理性能等多个维度进行全面对比。
328 0
MoR vs MoE架构对比:更少参数、更快推理的大模型新选择
|
10月前
|
传感器 存储 人工智能
一文彻底搞清楚数字电路
数字电路是处理离散二进制信号(0和1)的电子电路,由逻辑门(如与门、或门等)组成,实现各种逻辑运算。它在计算机、通信、自动控制和数字信号处理等领域广泛应用。例如,CPU通过数字电路执行算术和逻辑运算,PLC用于工业自动化控制,数字滤波器则用于信号处理。数字电路以高电平(如5V)表示1,低电平(如0V)表示0,简化了信号处理并提高了系统的可靠性和抗干扰能力。
1366 0
一文彻底搞清楚数字电路
|
存储 监控 安全
一天十道Java面试题----第三天(对线程安全的理解------>线程池中阻塞队列的作用)
这篇文章是Java面试第三天的笔记,讨论了线程安全、Thread与Runnable的区别、守护线程、ThreadLocal原理及内存泄漏问题、并发并行串行的概念、并发三大特性、线程池的使用原因和解释、线程池处理流程,以及线程池中阻塞队列的作用和设计考虑。
|
DataWorks 数据可视化 搜索推荐
DataWorks产品体验与评测报告
DataWorks是一款全面的大数据开发治理平台,通过最佳实践测评,展示了其在用户画像分析、数据管理和开发效率提升等方面的强大功能。体验过程中,虽遇到开通流程繁琐、文档不足等问题,但整体功能满足预期。建议增强实时数据处理能力和数据可视化功能,以进一步提升用户体验。与同类工具相比,DataWorks在功能全面性、性能和开放性上表现突出,但也需优化界面设计和价格策略。新版Data Studio中的Notebook和智能助手Copilot提供了优秀的交互式编程和智能辅助,但仍需改善稳定性和集成度。
|
存储 开发者 Windows
WINDOWS 环境变量设置方法
本文旨在帮助使用Windows电脑的开发者们为其设备配置环境变量,以更好地支持大模型应用的开发工作。文中详细介绍了三种配置方法:一是将环境变量设置为系统级变量;二是在命令行界面通过`SET`命令或`PowerShell`临时设置变量;三是借鉴MAC的方式,创建全局环境变量文件`.zshrc`进行配置。这些方法简单实用,便于根据实际需求选择适合的方式进行配置。
|
数据库
如何解决逻辑删除is_del与数据库唯一约束冲突
如何解决逻辑删除is_del与数据库唯一约束冲突
411 0
|
存储 算法 异构计算
这就是算法:日常生活中的算法应用
这就是算法:日常生活中的算法应用
1125 3
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
985 1
|
程序员 测试技术 Docker
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全(1)
1755 1

热门文章

最新文章