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

您所在的位置:网站首页 vs2022调用堆栈窗口 vs单步调试及断点调试基本介绍(入门版详细图文介绍)

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

2024-02-18 00:33| 来源: 网络整理| 查看: 265

简述:本文面向小萌新介绍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:** 调试的意义**:

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3