简述:本文面向小萌新介绍visual studio2022下的基本调试技巧(其他主流IDE均相似,仅具体快捷键键位不同

//本文无废话,建议小萌新仔细阅读
//
//本文无废话,建议小萌新仔细阅读
//
//本文无废话,建议小萌新仔细阅读
//

//注,用win10/win11系统初学c/c++的话建议直接安装vs,省心,初学没必要为难自己
vs2022安装教程https://blog.csdn.net/qq_43444947/article/details/104476963

//
//

1: 断点调试

//作用:可以用来快速定位问题在哪一块,如:正常运行到断点位置后停住,通过窗口输出情况可以判断运行到断点之前的部分是否符合预期
//
//
用法:打断点,在侧栏点击一下,即可生成断点就是那个红色的点

//
断点的作用: 在调试启动时可以运行到这一步之后停止,
//
使用方法:调试->开始调试
//

//
//
//
断点停住后
1:可配合单步调试一步步的运行(见后文介绍)
2:也可以恢复运行状态,继续运行程序直到等待输入,异常或者运行到下一个断点
//
//
//

//
如上图
停止在断点行
解释:此时有两个断点,停在第一个断点处,前面的运行完,输出hello
//
下方窗口显示局部变量i的值是468因为此时停在断点,还没有进入for语句的初始化i为0,所以此时i的值是内存中的值
//
//
而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常-----按预期输出了hello
//
//
而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常-----按预期输出了hello
//
//
而输出框中正常打印的hello代表从程序开始运行到第一个断点的这部分都一切正常-----按预期输出了hello
//
//
(实际中你可以通过多个关键地方打印信息,结合断点来快速定位问题)
//
//
在断点停住的情况下,可以接单步调试(见后面介绍),也可以恢复运行状态(使用方法,vs中是快捷键按f5
//
//
//vs中的位置------调试->继续,别的IDE也是类似,可能在侧边栏
//此处选择继续运行

//
//
此时,按完f5(vs中是点击继续)(别的IDE找到类似的选项之类),继续执行(或者叫“恢复程序运行状态”)后如图

上图解释:
调试启动后停在第一个断点后,程序停止在那一步此处选择继续运行,恢复运行状态此时一切顺利(没有异常等情况,一切顺利运行),直接运行至下一个断点,查看窗口输出
//
//
此时,按照预期输出了hello和3 6 9,然后停在第二个断点
//
//
//意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9)
//
//意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9)
//
//意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9)
//
//
//在实际项目开发中,会调用大量其他模块/底层api。此时可以通过关键地方设置多个断点,然后逐步恢复运行状态来判断哪个模块出现问题。而单步调试可用来在对应范围内去找具体的bug
//
//
//

2:** 单步调试**:

//作用:可以深入某一个模块,某一个函数去一行行执行代码,可以具体的去定位bug在哪一行。

//使用方法:
快捷键f11,(别的IDE也类似),单步调试可以直接按f11,然后从第一行开始逐步运行
//
//
不过通常用法是在断点调试下接单步。即直接运行到断点那行,再停下来一步一步运行,进而可以仔细检查每一行是否符合预期,
//
//

//如上图,此时是调试启动后,一切顺利的运行到第一个断点后,假设第一个断点到第二个断点中有bug,此时使用单步调试去具体定位bug在哪一行,此时仔细观察这部分代码每一行的运行过程
//
//
//上图按了一次f11(别的软件类似)(逐语句运行),此时,运行一行运行for(int i=0;i<3;i++)i初始化为0,值从之前的468变为0
//
//注,下面的窗口也能显示变量的内存地址相关信息,也可以用来定位内存相关的问题
//

//如上图,此时按下第二次f11(逐语句运行,别的IDE类似),此时观察监控窗口
//此时执行完num+=3;
//
//num的值变为3;(符合预期,借助这种方式来定位bug具体在哪行
//
//
//注:电脑快捷键分软件和系统层快捷键
//本人戴尔G3是通过Esc+fn键切换,不同电脑可能不一样,如果按对应快捷键无效,考虑是否需要切换为软件层面
//
//
//
另,f10是逐过程调试,不会进入函数块(本文就不测了,自己写个函数调用实践一下)f11逐语句,会进入函数块内部去调试
//
//
//再次强调,单步调试可以检查每一步是否符合预期比如for循环是否越界,赋值是否正确等,内存分配问题,底层调用是否正确赋值,中间结果是否符合预期,等等各种问题

//
//

补充:如果不小心关闭输出窗口,可以在此处点开即可
//
//注,需要在调试状态(即本身处于断点停住的调试,或者单步状态下)点开 调试->窗口->需要的窗口

//
//
//
总的来说,断点调试用来在整个程序中定位问题属于哪一个模块,而单步调试用来定位问题具体在哪一行
//
//

3:** 调试的意义**:

调试的意义在于检测每一行,每一个函数,每一个模块是否符合自己预期来执行。
//
// 其中断点调试通常通过恢复运行状态(继续执行)来快速定位bug在哪一个大的模块。
//
// 而单步调试一般是在断点调试的状态下,去具体的定位哪一行代码有bug
//
//更多的调试技巧,如调试条件设置,断点设置,堆栈分析,快照分析等,都需要自己去钻研,万事开头难,祝大家一切顺利

//
//
//
//
//有用的话可以点个赞表示对我的支持鼓励,谢谢大家
//
//有用的话可以点个赞表示对我的支持鼓励,谢谢大家
//
//有用的话可以点个赞表示对我的支持鼓励,谢谢大家
//
//注,后续有问题可以在评论区留言,看到后会更新文章。
//

vs单步调试及断点调试基本介绍(入门版详细图文介绍)相关推荐

  1. python学习-代码调试(通过print调试、通过pdb调试、通过编译器调试(断点调试))

    文章目录 通过print调试 通过pdb调试 通过编译器调试(断点调试) 通过print调试 首先我这里写了一段代码,保存列表中的偶数,然后返回列表,在函数执行后,我对函数结果进行打印. 见代码: l ...

  2. vs单步调试及断点调试基本介绍

    参考博客原址:https://blog.csdn.net/qq_43444947/article/details/104480128 简述:本文面向小萌新简单描述visual studio2019下的 ...

  3. c语言程序跟踪调试,VC6断点调试之监视变量

    上两讲中,为大家介绍到了VC6编译器的断点调试技巧,教给大家如何设置\取消断点.单步和跟踪一个程序.让大家具备基本的调试一个程序的能力.今天我们将继续深入研究教大家如何更细致.深入的跟踪和分析一个C程 ...

  4. Java断点调试 idea断点调试 debug教程

    IDEA断点调试 Java程序断点调试 文章目录 IDEA断点调试 Java程序断点调试 前言 一.什么情况下需要debug 二.使用idea如何进行debug 三.假设案例分别进行debug教程 1 ...

  5. python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...

    来源:雪球App,作者: 爱喝豆汁的投资者,(https://xueqiu.com/2680567071/130470562) 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码, ...

  6. iOS调试技巧-断点调试

    Condational Breakpoints(条件断点) 普通断点只要执行到断点所在行就会停止程序,但是有时候我们想当满足一定条件时才停止程序.这个调试技巧在当你想要捕获一个循环中的变量的特定值或者 ...

  7. OD调试常见断点及原理(浓缩版)

    OD调试时,常见的断点有int3.硬件断点.内存断点.消息断点.条件断点.条件记录断点等: 1.int 3断点 原理:改变断点地址处的第一个字节为CC指令,在OD中不显示 缺点:容易被检测到,如检测M ...

  8. chrome 控制台js调试与断点调试

    这篇文章是根据目前 chrome 稳定版(19.0.1084.52 m)写的,因为 google 也在不断完善chrome developer tool,所以 chrome 版本不同可能稍有差别. 一 ...

  9. Centos7下安装Docker容器详细图文介绍

    文章目录 为什么用docker Docker安装 1. 先卸载机器上原本的docker 2. 安装相关依赖 3. 设置镜像仓库 4. 安装相关引擎 5. 启动docker 6. 拉取镜像测试docke ...

最新文章

  1. python实现简单的用户密码登录控制(输入三次就锁定用户)
  2. javascript柱状统计图表
  3. java win8 mac地址_Windows8系统下MAC地址修改方法图文教程
  4. python下载的文件放在哪里的-Python下载文件的方法
  5. 应用下载店用户喜好分析
  6. Sigmoid 函数(To be continued)
  7. 队列链式结构C/C++实现(数据结构严蔚敏版)
  8. ABAP:DYNP_VALUES_READ读取屏幕字段值
  9. 胶囊网络全新升级!引入自注意力机制的Efficient-CapsNet
  10. oracle设置开机启动,linux下oracle设置开机自启动实现方法
  11. 剑指 Offer 15. 二进制中1的个数 and leetcode 1905. 统计子岛屿
  12. C/C++ _wcsupr_s 函数 – unicode 字符串小写转大写 - C语言零基础入门教程
  13. 随想录(爬虫的几个技巧)
  14. 没事爱在线上制造故障?这位程序媛有话说
  15. 计算机如何建筑材料结合所学知识,《技术与设计2》第三、四单元综合测试卷...
  16. 10 个功能独特且饱受好评的开源人工智能项目
  17. PowerShell 使用当前日期创建文件夹
  18. 数据库系统及应用——班级管理系统
  19. 声控小夜灯方案开发 声控小夜灯IC芯片方案开发MCU
  20. 计算机研究生申请 MIT,麻省理工计算机专业研究生申请条件有什么?

热门文章

  1. 数据分析和数据挖掘概述
  2. 独立站如何制定网红营销策略?
  3. 【论文精读】Misalignment-eliminated warp image stitching method with grid-based motion statistics matching
  4. 安科瑞AWT100无线数据采集通信终端
  5. base64存储图片/显示图片
  6. 马斯克呼吁重返办公室,直言:“做不到,就视为离职”
  7. Gradle配置阿里云镜像
  8. 前端简单实现当日时间只展示时间,否则只展示年月日
  9. AirSim中只能同时起飞五架飞机的问题
  10. 从月入5千到现在的月入1W+,会计转程序员,“谁说女的不适合学编程?”