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

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

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

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

(2)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LoadRunner简明教程[通俗易懂]

    LoadRunner简明教程[通俗易懂]LoadRunner是什么LoadRunner是一个性能测试工具,它最初是Mercury公司的产品,后背HP收购。LoadRunner常用来做什么l&nbsp;验证某系统在某环境下是否满足性能需求。l&nbsp;通过测试,规划如何达到要求的性能指标。l&nbsp;调整系统环境,进行性能测试,最终使性能达到最优。为什么要使…

    2022年5月24日
    34
  • BT渗透「建议收藏」

    BT渗透「建议收藏」PHP交流群:294088839,Python交流群:652376983 whois域名/ip查看域名的详细信息。ping域名/ip测试本机到远端主机是否联通。dig域名/ip查看域名解析的详细信息。host-l域名dns服务器传输zone。扫描nmap:-sS半开扫描TCP和SYN扫描。-sT完全TCP连接扫描。-sUUDP扫描-PSs…

    2022年4月29日
    51
  • MBUS协议_ofdm调制原理框图

    MBUS协议_ofdm调制原理框图4.4slave设计传输特性:slaves被设计为具有两种不同恒定sink电流,因此在总线上电压有1V的变化的时候,sink电流的变化一定不能超过0.2%。为了传输一个Mark,一个单位负载被指定,一个单位负载由最大为1.5mA的恒定电流组成。如果slave需要更多的电流,就必须增加适当数量的单位负载。当发送一个space的时候,slave需要多增加11~20mA的电流消耗。Slave在接收…

    2022年10月15日
    3
  • 异常的中英文对照_圣经中英文对照

    异常的中英文对照_圣经中英文对照在触发异常的地方添加一下代码,就会出现英文的异常Thread.CurrentThread.CurrentCulture=CultureInfo.InvariantCulture;Thread.

    2022年8月3日
    6
  • python django环境搭建_pip安装virtualenv

    python django环境搭建_pip安装virtualenvpython虚拟环境虚拟环境(virtualenvironment),它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西

    2022年8月7日
    6
  • 免费已备案二级域名_二级免备案域名

    免费已备案二级域名_二级免备案域名今天给大家推荐一个免备案的免费二级域名注册平台。DYUNS域名网-永久免费域名_免备案域名只需要一个邮箱,就能注册到自己的二级域名,非常方便。提供”icu.ltd”等超短域名注册服务,非常有利于用户访问与记忆。平台还提供了免费的CDN+防御+免备案服务,这是其他平台都没有的,也是我选择它的理由之一。管理也非常方便,后台一键就能完成自助删改解析等操作。官方客服的服务也是十分的到位,体验很好。大家也可以自行注册体验哦!…

    2025年10月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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