0


C语言之寻找算法逻辑漏洞——单步调试入门(新手必看!!!)

@[TOC]

注意:该方法只有在通过编译情况才才可以使用。


1.前言

第一篇第一篇,有点小.....emmmm激动吧。

在我们敲代码的过程中,有时候虽然通过了编译,但是输出却是和我们的预期大相径庭,于是乎单步调试应运而生。

最开始学C语言的时候总是会徘徊于各类莫名算法逻辑错误而又无可奈何,直到我掌握了这个秘籍——单步调试。

今天我就给大家分享一下单步调试的一些基本用法。


2.进入单步调试

1.直接进入:如下图调试中点击逐语句或逐过程。(不推荐)

2.快捷键使用:F10或F11启动。(推荐)

3.通过断点启动,在程序运行到断点后便自动进入单步调试


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,在单步调试当中会经常使用。单步调试使用方法如上所示。


4.小技巧

一.配合断点的使用

断点与单步调试主要有两种配合方式。

(例子比较蠢不要在意。。。重比较易懂)

第一种:如上述所示如果我们此时想单步调试这个程序查看b和c的值时,从头开始一直按F10(F11)实在是耗费时间和精力,此时我们就可以在a数组结束的下一语句前设置一个断点,然后正常运行此程序,这时程序便会停在断点所在处,而且可以详细看到局部变量的值,这样便可以进入单步调试观察b,c所获得的值啦。

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

二.单步调试的监视

正常情况,单步调试下面的局部变量只会显示运行附近的变量值,如果你想查看某个值整个过程的变化,可以将它列入监视,如上图,这是你就可以在监视1中看见它的具体变化啦。


5.适用功能

单步调试可以发现诸如数组越界等问题的详细地方,更棒的是可以直观地观察数组各个位置的值。这样可以观察值的功能才是最有用的,在你的程序没有一些语法上的bug时,往往最令人头疼的是算法带来的问题,单步调试可以让你跟着你的代码一步步地往下走,让你一直跟着你的代码前进,而且单步调试时你还可以看到所有你想要看到的变量的值,无论是数组,字符串,乃至于vector,map等等各种容器,你都可一一对照,用程序实际上运行出来的值和你的理想值进行比对,可以精确,有效地找出出现问题的地方。


6.结语

单步调试常用功能就是上面这些了,刚入门时可能用处不大,但当你开始做一些比较复杂的,尤其是牵扯到数据结构的一些代码的时候,单步调试就会显得尤为重要。可以说如果没有单步调试,对于复杂代码的算法逻辑错误等问题基本上就是束手无策了。

关于会使用并熟悉还是得靠自己老老实实敲代码,点赞不等于学会,收藏不等于精通,希望我们一起进步,一起秃头(?)。


好了,这次的分享就到这里,大家(¦3[▓▓] 好梦。

ps:萌新新作,dalao轻喷。。。。


本文转载自: https://blog.csdn.net/Modest_y/article/details/117715209
版权归原作者 Modest_y 所有, 如有侵权,请联系我们删除。

“C语言之寻找算法逻辑漏洞——单步调试入门(新手必看!!!)”的评论:

还没有评论