当前位置: 首页 > news >正文

VS实用调试技巧

一.bug

bug本意是“昆虫”或“虫子”,现在一般是指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或 问题,简称程序漏洞

二.调试(debug)

当我们发现程序中存在的问题的时候,那下⼀步就是找到问题,并修复问题。

这个找问题的过程叫称为调试,英文叫debug(消灭bug)的意思。

调试一个程序,首先是承认出现了问题,然后通过各种手段去定位问题的位置,可能是逐过程的调 试,也可能是隔离和屏蔽代码的方式,找到问题所的位置,然后确定错误产生的原因,再修复代码, 重新测试。

三.Release和Debug

  • Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序; 程序员在写代码的时候,需要经常性的调试代码,就将这里设置为 debug ,这样编译产生的是 debug 版本的可执行程序,其中包含调试信息,是可以直接调试的。
  • Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的, 以便用户很好地使用,但是不能调试。 当程序员写完代码,测试再对程序进行测试,直到程序的质量符合交付给用户使用的标准,这个时候就会设置为 release ,编译产生的就是 release 版本的可执行程序,这个版本是用户使用的,无需包含调试信息等。
  • 测试测试的是release版本,只有研发人员使用的是debug版本
  • 对比同一段代码,编译生成的可执行文件的大小,release版本明显要小,而debug版本明显要大。

四.VS调试快捷键

4.1环境准备

首先是环境的准备,需要⼀个支持调试的开发环境,使用VS时,应该把VS上设置为Debug。

4.2调试快捷键

常见的快捷键

  • F9 :创建断点和取消断点断点:可以在程序的任何位置设置断点,打上断点就可以使程序到想要的位置暂停执行,然后可以使用F10,F11这些快捷键,观察代码的执行细节
  • F5:启动调试,经常用来直接跳到下一个断点处,一般和F9配合使用。
  • F10:逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
  • F11:逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部。在函数调用的地方,想进入函数观察细节,必须使用F11,如果使用F10,直接完成函数调用。
  • CTRL+F5:开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
  • VS更多快捷键了解:http://blog.csdn.net/mrlisky/article/details/72622009

五.监视和内存观察

在调试的过程中,如果要观察代码执行过程中,上下文环境中的变量的值,一定是开始调试后观察

监视:开始调试后,在菜单栏中【调试】->【窗口】->【监视】,打开任意⼀个监视窗口,输⼊想要观察的对象就行。

内存:如果监视窗口看的不够仔细,也是可以观察变量在内存中的存储情况,还是在【调试】->【窗口】-> 【内存】

内存窗口分为三部分:地址,数据,对内存中数据的解析(只有参考意义)

数据:实际上内存中存放的是二进制数据,为了方便展示,以十六进制形式显示

在打开内存窗口后,要在地址栏输⼊:arr,&num,&c,这类地址,就能观察到该地址处的数据。

在栈区上开辟空间,默认的习惯是:先使用高地址的空间,再使用低地址的空间

数组的地址,随着下标的增长,地址是由低到高变化的

注意:栈区的默认的使用习惯是先使用高地址,再使用低地址的空间,但是这个具体还是要编译器的 实现,比如: 在VS上切换到X64,这个使用的顺序就是相反的,在Release版本的程序中,这个使用的顺序也是相反的。

  • 在函数内部打断点,快速跳转到函数
  • 在数组传参,调试进入函数,如何在监视窗口观察数组的内容: 数组名,n 的形式

调试过程中,要做到心中有数,也就是程序员自己心里要清晰的知道希望代码怎么执行,然后再去看代码有没有按照我们预定的路线在执行。

调试是需要反复去动手练习的,调试是可以增加程序员对代码的理解和掌控的,掌握了调试的能力, 就能看到本质。

六.编程常见错误

6.1编译型错误

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

6.2链接型错误

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

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

6.3运行时错误

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

http://www.jsqmd.com/news/419509/

相关文章:

  • 3个月速成大模型大师!2026年学大模型的“邪修”进阶秘籍,薪资飙升不是梦!
  • Linux常见命令集合(持续更新中...)
  • 2026年AI圈薪资真相:手握大模型算法,年薪百万只是起步!5大高薪岗位+6招涨薪秘籍全解析
  • 2026年襄州区装修施工队选择指南与实力厂商推荐 - 2026年企业推荐榜
  • 2026年餐桌石材源头厂家选择指南与TOP5品牌解析 - 2026年企业推荐榜
  • 2026年Q1枣阳市装修服务商口碑推荐:这三家信誉有保障 - 2026年企业推荐榜
  • 2026年尼龙件加工公司权威推荐:PA尼龙棒/mc注塑异形加工件/mc浇筑尼龙加工件/pp尼龙棒/选择指南 - 优质品牌商家
  • 2026年评价高的免费推广平台公司推荐:网络推广平台、网络推广排名、网络推广效果、网络推广方案、网络推广渠道选择指南 - 优质品牌商家
  • TDengine IDMP 数据可视化——预测与补全
  • 波士顿TechCrunch创始人峰会2026展位招募
  • 软件工程专业毕设
  • 软件漏洞武器化速度创历史新高
  • 引用类型主要分为四种
  • VMD命令
  • 2026年厌氧氨氧化菌厂家权威推荐榜:厌氧反应器,、厌氧塔、厌氧氨氧化颗粒污泥、厌氧池,、厌氧污泥颗粒、厌氧菌选择指南 - 优质品牌商家
  • Linux常用命令实操全解析
  • 字节跳动AI大战复盘:全场景探索、多模型筑基、生态化布局
  • 前后端分离档案管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 2026年焊接烟尘净化器厂家推荐:焊接烟尘除尘器/焊接除尘设备/焊烟净化器设备/焊烟净化器除尘器/选择指南 - 优质品牌商家
  • Java SpringBoot+Vue3+MyBatis 档案管理系统系统源码|前后端分离+MySQL数据库
  • 大学生创新创业训练项目管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 2026年双酚F品牌厂家最新推荐:双酚F生产商、双酚F销售厂家、复合型双酚F、工业级双酚F、电子级双酚F选择指南 - 优质品牌商家
  • Java SpringBoot+Vue3+MyBatis 大学新生报到系统系统源码|前后端分离+MySQL数据库
  • 2026年福人精板全屋定制厂家最新推荐:F4环保板材全屋定制/全屋定制板材品牌排名/南京全屋定制源头厂家/选择指南 - 优质品牌商家
  • 突破量化交易瓶颈:探索backtesting.py的5大技术维度与实战指南
  • 赛芯微 XB8608AJ 4.30V/2.40V/9A 单节锂电池保护IC SOP8 技术解析
  • 百度全面亮出AI业务新成绩:2025Q4,AI收入占比43%
  • 企业级数据协作平台部署与应用指南:基于开源Teable的全流程实践
  • 2026年垂直立体货柜厂家推荐:智能立体货柜、智能货柜、自动化立体货柜、垂直升降货柜、垂直提升货柜选择指南 - 优质品牌商家
  • IL2CPP启动失败解决方案:BepInEx与Unity游戏兼容性问题的深度排查与修复