首页 > 其他分享 >VS_调试技巧

VS_调试技巧

时间:2024-08-10 18:52:50浏览次数:11  
标签:技巧 错误 VS 内存 观察 断点 bug 调试

1. 什么是bug

bug的本意是“昆虫”或“虫子”,现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题,简称程序漏洞
bug来源:
“Bug” 的创始人格蕾丝·赫柏(Grace Murray Hopper),她是一位为美国海军工作的电脑专家,1947年9月9日,格蕾丝·赫柏Harvard Mark II设置好17000个继电器进行编程后,技术人员正在进行整机运行时,它突然停止了工作。于是他们爬上去找原因,发现这台巨大的计算机内部⼀组继电器的触点之间有一只飞蛾,这显然是由于飞蛾受光和热的吸引,飞到了触点上,然后被高电压击死。所以在报告中,赫柏用胶带贴上飞蛾,并把“bug”来表示“一个在电脑程序里的错误”,“bug”这个说法⼀直沿用到今天。

2. 什么是调试

当我们发现程序有问题的时候,需要找出问题,并解决问题,这个找出问题的过程就叫做调试,英文叫debug(消灭bug的意思)
当我们在测试程序发现结果不符合预期时,我们就需要调试首先要找到问题所在的位置,然后修正代码,最后重新测试。

3. Debug和release

在这里插入图片描述
相信大家在VS上编写代码时,会看到DebugRelease两个选项,那么分别是什么意思呢?

  • Debug通常称为调试版本。它包含调试信息,并且不作任何优化,便于程序员调试程序
  • Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户更好的使用。

同一段代码,编译生成的可执行文件的大小,release版本比debug版本要小。

4. 调试须知

4.1 环境准备

在这里插入图片描述
调试时,需要一个支持调试的开发环境,把VS上设置为Debug,如上图。

4.2 调试快捷键

调试时最常用的几个快捷键如下:

  • F9创建断点和取消断点
    我们可以在程序的任意位置设置断点,打上断点就可以使得程序执行到想要的位置暂停执行,接下来我们就可以使用F10F11这些快捷键,观察代码的执行细节。
    条件断点:满足条件,才可以触发断点。
  • F5启动调试,经常用来直接跳到下一个断点处,一般和F9配合使用。
  • F10逐过程,通常用来处理一个过程,一个过程可以是一次函数调用(直接完成调用,不进入函数),也可以是一条语句。
  • F11逐语句,每次执行一条语句,可以进入函数内部
  • Ctrl + F5开始执行不调试,如果你想让程序直接运行而不调试就可以直接使用。

VS 快捷键了解:添加链接描述

5. 监视和内存观察

调试过程中,我们要观察代码执行过程中上下文环境中的变量的值,有哪些方法呢?
注:这些观察的前提条件一定是开始调试后再观察
例:

#include<stdio.h>

int main(){
	int arr[10] = { 0 };
	int n = 20;
	char c = 'h';
	
	int i = 0;
	for(i = 0;i < 10;i ++){
		arr[i] = i;
	}
	
	return 0;
}

5.1 监视

开始调试后,在菜单栏中【调试】->【窗口】->【监视】,打开任意一个监视窗口,输入想观察的对象即可。操作如下方:

首先,在想观察的位置用F9打上断点(这样才能暂停程序执行,进而看见观察对象的变化,不然程序会直接执行结束),用F5开始调试

在这里插入图片描述
然后,打开监视窗口

在这里插入图片描述
最后,添加观察对象,用F10逐过程)或F11逐语句)一步一步执行下去。

在这里插入图片描述

5.2 内存观察

如果监视窗口看的不够仔细,我们还可以观察变量在内存中的存储情况,在菜单栏中【调试】->【窗口】->【内存】。操作如下:
在这里插入图片描述
打开内存窗口后,可在红框里输入观察对象的地址(如上方代码中:&c、&n、arr)

在这里插入图片描述
补充:内存窗口说明

在这里插入图片描述

6. 编程常见错误归类

6.1 编译型错误

编译型错误一般是语法错误。这类错误一般看错误信息就能找到一些蛛丝马迹,双击错误信息也能初步跳转到代码错误的位置或附近。编译错误会随着我们对语言掌握熟练程度的提升而减少。

例:在这里插入图片描述

6.2 链接型错误

看错误提示信息,这些错误通常涉及符号定义和引用的问题,错误情况一般如下:

  • 标识符名不存在
  • 拼写错误
  • 头文件没包含
  • 引用的库不存在

6.3 运行时错误

这类错误是一般编译时觉察不到的,是最不易改正和发现的,如数组越界、函数递归时栈溢出等,需要我们逐步调试来定位错误,解决错误。

标签:技巧,错误,VS,内存,观察,断点,bug,调试
From: https://blog.csdn.net/2403_82882218/article/details/141089345

相关文章

  • 开发提效之-远程debug调试
    一、问题与现状1.开发调试现状当我们的代码在线上/测试环境运行出现异常或者业务处理出现问题时,需要进行问题定位,之前的传统做法是:1)查看异常日志,根据日志定位到出错代码,然后再根据相关参数及异常信息进行推断。2)当属于业务上存在问题,导致了数据处理错误,则需要通过在业务代......
  • JSP古田会址旅游网站t7554(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,景点类型,旅游景点,古田故事,古田人文,自驾游线路,酒店信息技术要求:    开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoo......
  • JSP光合速率异常值分析系统vdl8c(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表技术要求:开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用MySQL开题报告内容一、课题名称光合速率异常值分析系......
  • JSP共享单车管理系统7jdfc(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统主要功能介绍:用户,单车,所属区域,站点名称,租赁信息,还车信息,单车报修技术要求: 开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Sp......
  • VS2010旗舰版VB.NET版本音频剪辑代码2024-8-10
    ImportsSystem.ComponentModelImportsSystem.IOImportsSystem.DiagnosticsImportsSystem.DrawingImportsSystem.Windows.FormsPublicClassForm1PrivateWithEventsbgWorkerAsNewBackgroundWorkerPrivateffmpegPathAsString=“C:\ffmpeg-master-lates......
  • Linux问题调试(4)--内存问题与tcmalloc
    1、问题概述      之前的文章介绍过Asan来定位内存泄漏问题,虽然已经被集成到各大编译器中,‌但它的使用可能受到特定环境或配置的限制。‌例如,‌在某些复杂的系统或应用程序中,‌ASan可能会因为与程序的交互复杂性而遇到挑战,‌导致难以准确诊断问题。‌Linux问题调试(2)--......
  • 阿斯蒂芬小技巧——枚举子集时间复杂度证明
    在写状压dp时,经常会见到如下句子:for(inti=0;i<(1<<n);i++){ for(intj=i;j!=0;j=(j-1)&i){ }}时间复杂度证明如下:单个\(x\)枚举子集复杂度易证(设\(y=log_2(x)\)):\[∑_{i=0}^{y}C^i_y\]使用二项式定理:\[(a+1)^n=∑_{i=0}^{n}C_n^i~a^i\]将上面的\(a\)......
  • 【攻防】一个关于内网渗透过程的小技巧
    在我们打攻防进行内网渗透的过程中,很多时候需要去收集内网的密码字典再对内网主机进行批量的密码喷洒。这里密码获取的手段有很多,例如:1、mimikatz抓取入口主机密码2、翻查入口主机中关于密码的文件(例如数据库密码)3、web系统的密码4、自己构造目标的密码字典(xxx@2024\xxx@2023......
  • UDP/TCP网络调试助手 NetAssist【调试工具】下载
    链接:https://pan.baidu.com/s/1QgL4XZdKNW39nFe18feBbw?pwd=1122提取码:1122–来自百度网盘超级会员V3的分享接收设置ASCII:以ASCII格式显示接收到的数据。ASCII是一种字符编码标准,用于表示文本数据。HEX:以十六进制格式显示接收到的数据。十六进制显示更适合查看和调试......
  • PTE vs IELTS All In One
    PTEvsIELTSAllInOne雅思vsPTE——您应该选择哪一个英语水平考试?虽然这两项测试最终都为学生提供了在英语为母语的国家学习、工作或移民的机会,但它们仍然有其独特的差异。PTE-学术考试(PTE-A)是一项完全通过计算机进行的两小时英语考试,评估考生的口语、听力、阅读和写......