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

vs单步调试及断点调试基本介绍(入门版详细图文介绍)简述:本文面向小萌新简单描述visualstudio2019下的基本调试技巧1:打断点,在侧栏点击一下,即可生成断点功能:在调试时可以运行到这一步之后停止如图2:进而可以单步调试,快捷键f11//注,电脑快捷键分软件和系统层快捷键//本人戴尔G3是通过Ese+fn键切换,不同电脑可能不一样注意窗口i的值,进入第一次for循环,i赋值为0之后,进入printf,然后返回f…

大家好,又见面了,我是你们的朋友全栈君。

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

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

//注,用win10系统初学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
//
//更多的调试技巧,如调试条件设置,断点设置,堆栈分析,快照分析等,都需要自己去钻研,本文只是初步介绍一下,万事开头难,祝大家一切顺利

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143188.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(2)
blank

相关推荐

  • Jenkins前端打包内存溢出问题

    Jenkins前端打包内存溢出问题

  • html跳转指定位置(html登录页面跳转到不同页面)

    锚标签和href属性HTML使用(锚)标签来创建连接另一个文档的链接。锚可以指向网络上的任何资源:一张HTML页面,一幅图像,一个声音或视频文件等等。用来创建锚。href属性用于定位需要链接的文档,锚的开始标签和结束标签之间的文字被作为超级链接来显示。锚标签和Name属性Name属性用于创建被命名的锚(namedanchors)。当使用命名锚(name

  • How to Remember New Words

    How to Remember New Words

  • 学习vb语言「建议收藏」

    学习vb语言「建议收藏」第一天:昨天完成了安装vb环境今天大概了解了一下vb语言的一些语法,但是把所学的整理出来,一时间却又不知道如何整理。换一个方式,我来看看接下来要学什么。1.vb变量的作用域2.常用的内部函数3.数据的输入和输出4.常用的标准控件5.vb结构控制6.键盘过程7.菜单和对话栏8.数据文件学习这些的基础是今天所学的或者所了解到的1.建立一个vb程序的大致流…

  • HashMap扩容机制

    HashMap扩容机制想要了解HashMap的扩容机制你要有这两个问题1.什么时候才需要扩容2.HashMap的扩容是什么1.什么时候才需要扩容当HashMap中的元素个数超过数组大小(数组长度)*loadFactor(负载因子)时,就会进行数组扩容,loadFactor的默认值(DEFAULT_LOAD_FACTOR)是0.75,这是一个折中的取值。也就是说,默认情况下,数组大小为16,那么当HashMap中的元素个数超过16×0.75=12(这个值就是阈值或者边界值threshold值)的时候,就把数组的大小扩展

  • redis使用redis-cli查看所有的keys及清空所有的数据

    redis使用redis-cli查看所有的keys及清空所有的数据

    2021年10月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号