@[TOC]
注意:该方法只有在通过编译情况才才可以使用。
第一篇第一篇,有点小.....emmmm激动吧。
在我们敲代码的过程中,有时候虽然通过了编译,但是输出却是和我们的预期大相径庭,于是乎单步调试应运而生。
最开始学C语言的时候总是会徘徊于各类莫名算法逻辑错误而又无可奈何,直到我掌握了这个秘籍——单步调试。
今天我就给大家分享一下单步调试的一些基本用法。
1.直接进入:如下图调试中点击逐语句或逐过程。(不推荐)
2.快捷键使用:F10或F11启动。(推荐)
3.通过断点启动,在程序运行到断点后便自动进入单步调试

正常启动后如上图所示(左侧小黄标即是程序现在运行的地方)
| 标记点处 | 名称(快捷键) | 作用 |
| 1 | 继续(C 建议直接按) | 继续运行直到程序结束或遇上下一个断点 |
| 2 | 停止调试(shift+F5) | 直接中止程序 |
| 3 | 跳出(shift+F11) | 跳出函数 |
| 4 | 逐语句(F11) | 向下继续运行(可深入函数) |
| 5 | 逐过程(F10) | 向下继续*(不可深入函数) |
1.1点处名为继续(废话),字面意思就是继续运行直到程序结束(如果过程中没有数组越界之类的神奇bug的话)。
2.2点处名为停止调试,还是字面意思直接在你黄色小标(如上图最左下那个小标)处直接中止程序,不会继续往下运行。
3.3点处为跳出,作用主要在于单步执行进入函数是点击后可以直接执行完毕函数。如下图此时已经进入函数体,点击跳出即可跳出add函数并且成功返回值40赋给c。

4.4处与5处放在一起讲,这两个键的作用相似,却是单步调试的重点所在。4处逐语句(F11)和5处逐过程(F10)都可以使得程序向下运行一步。
但是在碰到函数这种需要深入内部的情况时,逐过程会自动执行函数,直接跳转到下一条语句。而逐语句则是会深入函数内部,这时你就可以详细探究一下函数内部的变化。
如上图实例,在程序运行到1处时,使用逐过程程序会跳至2处,而使用逐语句会使得程序跳入3处。
推荐熟练掌握快捷键F10和F11,在单步调试当中会经常使用。单步调试使用方法如上所示。
一.配合断点的使用
断点与单步调试主要有两种配合方式。
(例子比较蠢不要在意。。。重比较易懂)
第一种:如上述所示如果我们此时想单步调试这个程序查看b和c的值时,从头开始一直按F10(F11)实在是耗费时间和精力,此时我们就可以在a数组结束的下一语句前设置一个断点,然后正常运行此程序,这时程序便会停在断点所在处,而且可以详细看到局部变量的值,这样便可以进入单步调试观察b,c所获得的值啦。

第二种:与第一种类似,第二种是在先进行单步调试的状态下设置断点,可以看到此时已进入单步调试,且通过手动走了两次循环,为了不在这里浪费时间,我们可以在图示位置设置一个断点,然后点击继续旋钮,此时程序便会跳过循环直接到达断点处,同样直接进入了单步调试。

二.单步调试的监视

正常情况,单步调试下面的局部变量只会显示运行附近的变量值,如果你想查看某个值整个过程的变化,可以将它列入监视,如上图,这是你就可以在监视1中看见它的具体变化啦。
单步调试可以发现诸如数组越界等问题的详细地方,更棒的是可以直观地观察数组各个位置的值。这样可以观察值的功能才是最有用的,在你的程序没有一些语法上的bug时,往往最令人头疼的是算法带来的问题,单步调试可以让你跟着你的代码一步步地往下走,让你一直跟着你的代码前进,而且单步调试时你还可以看到所有你想要看到的变量的值,无论是数组,字符串,乃至于vector,map等等各种容器,你都可一一对照,用程序实际上运行出来的值和你的理想值进行比对,可以精确,有效地找出出现问题的地方。
单步调试常用功能就是上面这些了,刚入门时可能用处不大,但当你开始做一些比较复杂的,尤其是牵扯到数据结构的一些代码的时候,单步调试就会显得尤为重要。可以说如果没有单步调试,对于复杂代码的算法逻辑错误等问题基本上就是束手无策了。
关于会使用并熟悉还是得靠自己老老实实敲代码,点赞不等于学会,收藏不等于精通,希望我们一起进步,一起秃头(?)。
好了,这次的分享就到这里,大家(¦3[▓▓] 好梦。
ps:萌新新作,dalao轻喷。。。。
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现