浅谈Dev c++ 调试

📅 发布时间:2026/10/19 1:10:47
浅谈Dev c++ 调试
浅谈调试何为调试及为什么要调试调试是程序运行结果与期望结果不统一时在手动计算模拟的前提下编译程序对比不同修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。运行代码只能得到两种结果A c AcAc或W a WaWa。但是程序很笨不能直接告诉你错哪里了需要你一个函数、一个循环、乃至一行一行地去debug。这时候了解并掌握dev的动态调试可以帮助你找到错误位置发现错误原因从而在更短的时间内成功debug。此外调试也是程序员必备的一个技能在日后的面试或者工作中掌握调试技能是不可或缺的。接下来开始详细介绍调试调试环境准备在这里我用Dev c的做例子不同的编程软件有不同的调试方式会有所出入其他的编译器请读者自行研究或在CSDN上搜索有关攻略你需要Dev c 一个并事先将语言文字调成中文以方便寻找笔演草纸。正常的脑子一个步骤打开工具栏点击第一行编译选项选择代码生成/优化一栏再选择连接器下面第二行名为产生调试信息的地方设为YES简单两步调试环境就准备好了。注意这两步极其关键。如果没有将产生调试信息一栏选为“YES“就直接开始调试就会报错。如下图如果你不小心点了Yes 那么恭喜你Dev c会用卡退和没有保存的代码来回馈你的懒惰。调试的对象广义上调试的对象是一整个代码。而我这里的调试对象是指哪些类型的变量或者常量可以在调试的窗口中直接看到。根据我一年来的调试经验我总结出以下几个方面支持调试的类型i n t intint类型包括一维、二维数组一般来说一维数组简单明了二维数组比较难观察三维及以上的数组很少用到观察起来也很困难所以我不介绍三维及以上的数组调试。也可以直接观察到数组的指定位置下标d o u b l e doubledouble和f l o a t floatfloat类型及其数组b o o l boolbool类型及其数组c h a r charchar类型及其数组p a i r pairpair类型及其数组s t r u c t structstruct类型及其数组c o n s t constconst和d e f i n e definedefine定义的常量不过一般没人调试它不支持调试的类型先解释一下不支持调试的意思。一种情况是指个别少数的数据类型在添加查看后无法进行调试或者会卡退导致调试中断或无法进行则称之为不可调试类型。还有一种就是调试窗口显示的是类型的地址或“乱码”就是你看也看不懂也没有显示你需要的信息我也把他加入不可调试的范畴里。s t r i n g stringstring类型。所以在涉及字符串的调试时建议先将其转化为c h a r charchar数组在进行调试会舒服很多。v e c t o r vectorvector类型m a p mapmap和s e t setset类型对于这几种数据类型的调试推荐使用p r i n t f printfprintf或者c o u t coutcout直接输出查看调试在了解了调试的对象后我们就可以输入自己想查看的变量或者常量了。添加查看添加查看有两种方式。其一为手动输入其二为选择输入手动输入。在底下选择调试栏目点击添加查看再输入变量名选择输入 拖选一个变量名再点击添加查看。适用于变量名过长或带有下标的数组。查看方式 初始情况下再代码区左侧处拖动可以调整调试区域大小。有时候数组的长度过大调试区域并不会自动换行就会出现下面的尴尬情况这时候把调试区域设为浮窗可以有效解决这种问题。在调试二字处单击鼠标右键点击浮动项目管理器就可以轻松解决啦。把调试浮动窗口调节到合适的位置这样就能舒服得调试啦如下图会打断点什么是断点断点就是在调试的时候告诉程序在运行到哪一步时停下然后人为的一行一行运行代码毕竟电脑一秒内可以运行好多好多行你的大脑是算不过来的。断点涉及到三个问题怎么打 在代码左边的行数显示中单击想要停止运行的那一行那一行不会运行那一行就会变红。此时断点就打好了如下图在哪打 这个问题可能会有些奇怪但确实是一个很重要的问题。一个代码可以打很多个断点但是并不是每一行都需要打上断点。例如下图的断点和上图的断点是等价的。这样其实和上上张图是等价的。因为断点后面的程序都是一步一步运行的你点击下一步才会运行。所以在一个板块内这里的板块是指一个循环、或者一些代码的组合来解决一个分支问题的意思只用在板块的首行打上断点即可。会跳过。函数调用断点。当程序存在自定义函数时我们又怀疑函数有点小问题时在函数的定义那一行打上断点即可。在函数调用的地方不用打断点。当然打了也不会有问题只是与没打没有区别而已。下一步在点击开始调试前有个小建议。建议用文件输入窗口输出。文件输入可以一次性将数据点输入到.in文件里避免了边调试边输入的情况发生。窗口输出可以实时查看输出情况。当以上都准备好的时候我们点击任务栏中的紫色小钩钩或者点击F 5 F5F5即可进入调试。进入调试成功的时候第一个断点会变成蓝色。如下图这时候我门鼠标点击下一步或者按快捷键Alt N即可进入到下一行。跳过跳过是指从一个断点直接跳过多行进入下一个断点。每当这个断点到下一个断点又很长的距离运行的距离时一直点击下一步显然不是个办法。这时你就需要一个跳过。掌握跳过技能可以方便地让你进入到指定的代码。跳过按钮的快捷键为Alt S。跳过在f o r forfor和w h i l e whilewhile循环中是一个常用技能。例如先在双重f o r forfor循环的那一行的下一行一定要下一行原因有点难解释这是我多年来的经验打上断点然后点击跳过。此时f o r forfor运行了一个周期。这时循环进入到第二个周期这是程序又来到了那一行的断点。而那个断点就是程序理解的下一个断点断点。所以程序会在第二个周期前停下。这样我们就跳过了一个循环周期。在多组测试数据时会遇到第一组数据过了但是第二组没过那么在多组测试数据的循环的下一行上打上断点再点击跳过即可跳过第一组数据直接进入下一组的调试。再次强调一定要在下一行当然如果你想特别的看i ii95 9595的情况怎么办其实也很简单我们把代码改装一下。演示代码没有任何使用价值点击调试在点击跳过我们就会发现代码直接停在了i 0 j 95 i0 j95i0j95的情况。这时候我们的目的就达到了。局部变量延时查看局部变量在调试查看窗口是快速变化的这里的快速变化我在后面解释不是字面意思上的快速变化。有的时候尤其是循环里面当前的下一行是下一个周期而当前查看的变量正好与周期变量i ii有关。例如查看a [ i ] a[i]a[i]的值但是下一步i ii了这时候查看窗口中显示的是a [ i 1 ] a[i1]a[i1]的值你不能直观地查看a [ i ] a[i]a[i]的值这就是我定义的快速变化的窗口。此时我们只需要在下一行输入一个不会改变代码作用的随便一个指令例如定义一个b o o l boolbool或者把一个无关紧要的变量赋个值就可以让调试区缓冲一下延时查看。我的习惯是定义一个全局布尔变量f l a g flagflag在想要延时查看的地方给他赋值就能在调试的时候达达延时查看的效果了。总结关于调试的介绍就这么多了。还有许多的功能等待大家探索。