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
-
Debug被称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试。
-
Debug(调试)的官方释义:是一种有条理的过程,可以发现并减少计算机程序或电子硬件中的错误或缺陷数量,从而使其表现出预期的效果。当各个子系统紧密耦合时,调试会变得更加困难,因为一个子系统中的更改可能会导致另一个子系统中出现错误。已经编写了许多有关调试的书籍,因为它涉及许多方面,包括:交互式调试,控制流,集成测试,日志文件,监视,内存转储,统计过程控制,以及改进检测并简化更改的特殊设计策略。——来自维基百科
Release
- Release被称为发布版本,它往往进行了各种优化,使得程序在代码大小和运行速度上都达到最佳,以便用户更好的使用。
如何调试
- 调试:又称除错,是发现和减少计算机程序电子仪器设备中程序错误的一个过程。
调试的基本步骤:
1.发现程序错误的存在
2.以隔离、消除等方式对错误进行定位
3.确定错误产生的原因
4.提出纠正错误的解决办法
5.对程序错误予以改正,重新测试
VS调试快捷键
- Visual studio是一个集成开发环境,简称IDE,它是集成了编辑器、编译器和调试器。(在Linux环境下,gcc是编译器,gdb是调试器)
- 下面简绍几个在调试过程中常见的vs快捷键
F9:创建断点,取消断点
- 断点的作用是可以在程序任意位置创造断点,在想让程序停留的地方打上断点,程序暂停执行后可以配合其他快捷键进行调试。
F5:启动调试,经常用来直接跳到下一个断点处。
F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句
F11:逐语句,即每一次都执行一条语句,最为主要的是这个快捷键可以进入函数内部
ctrl+F5:开始执行不调试,在想让程序执行起来,而非调试可以直接使用
调试过程中查看程序信息
- 在查看调试过程中的程序信息时,必须先要开始调试即F10
查看临时变量的值
查看内存信息
查看调用堆栈
查看汇编信息
查看寄存器信息
编译常见错误
编译型错误
- 编译型错误⼀般都是语法错误,这类错误⼀般看错误信息就能找到⼀些蛛丝⻢迹的,双击错误信息也能初步的跳转到代码错误的地⽅或者附近
链接型错误
- 链接型错误一般原因是因为标识符名不存在,拼写错误,标识符不存在或者引用的库不存在等原因
运行时错误
- 运行时错误时程序员在编写程序时,为根据自身所想而产生的错误,需要用调试解决