首页 游戏教程 正文

codeblocks调试功能使用攻略解决常见编程错误

今天得好好说说Code::Blocks这个调试器的事儿,前几天差点被个小bug逼疯,全靠它救命了。你们要是跟我一样写代码总出些莫名其妙的错,这篇真得看看。

开搞调试器

昨儿半夜两点,我对着屏幕眼都花了。写了个破循环,明明感觉逻辑没问题,可跑起来结果死活不对。瞎改了几个地方,越改越乱,气得我差点把键盘砸了。忽然想起这IDE自带调试器,一直当摆设,这回死活得试试了。直接按键盘上那个大大的F8,启动调试!结果窗口底下“噼里啪”蹦出一堆红字错误信息,当场傻眼。

codeblocks调试功能使用攻略解决常见编程错误

  • 血泪教训一: 光按F8不行!得先建个调试能用的目标。
  • 踩坑实录: 在Code::Blocks左上角菜单扒拉半天,找到“Project - Properties”。点到“Build targets”,看见那个默认的“Debug”没?必须勾上!这玩意儿不勾,调试器根本不认你的程序。

断点才是大佬

设置好目标,信心满满又按了次F8。这回调式倒是启动了,窗口底下的小黄箭头也亮了,但程序“刷”一下就跑完了,屁都没看清。不行,得让它慢下来。

找到我觉得可能出问题的那行代码,把鼠标挪到左边灰色空白那块儿,直接点一下,立马蹦出个红色圆点——这玩意儿就叫断点。再按F8启动调试,程序果然跑到红点那行就卡住了!窗口最底下显示了当前执行的位置,旁边还有个黄色小箭头指着这行代码,表示它准备执行但还没执行

codeblocks调试功能使用攻略解决常见编程错误

乌龟爬行大法

程序在断点停住后,我才开始认真看键盘。几个最常用的:
Next line (F7): 像乌龟爬一样,一步一步执行当前代码,遇到函数就跟进去瞧瞧里面在干
Step over (Shift+F7): 也是乌龟爬,但碰到函数直接当透明人,不看函数里面,直接跳到下一条语句,省时间!
Continue (Ctrl+F7): 嫌爬得太慢?按这个!程序一口气从当前断点飙到下一个断点才停下。

我就用F7,慢悠悠地,一行一行地执行我那破循环。屏幕右边有个叫“Watches”的小窗口(没有的话去“Debug”菜单里开),真神了!我把循环里的变量名字输进去,每次按一下F7,窗口里面变量的值就跟着变,跟看监控似的。

揪出真凶

就这么跟着变量值看看,突然就发现问题了!我这循环想处理一个数组,数组明明只到第5个元素(下标0到4),结果我那循环条件愣是写成了 i <= 5i=5 的时候,程序傻乎乎地去访问数组的第6个元素,那地方鬼知道存的啥玩意儿,结果能不错吗?看到“Watches”里 i=5 时,旁边数组对应值显示是 之类的非法东西,恍然大悟!赶紧把 改成 ,世界瞬间清净了。

还在调试窗口右上角看到个“Call stack”(调用堆栈),点开一看显示着函数一层层调用的顺序,跟看侦探小说的线索链似的,复杂点儿的程序出错时看这个挺有用。

调试完,领导来抢功了

好不容易把那破bug解决,代码也跑顺溜了,正准备收拾东西回家补觉。领导微信来了:“那个循环的Bug搞定了没?我一看就知道是边界问题,跟你说了多少次仔细点!” 我握着鼠标的手当时就僵那了。刚熬了个通宵,用调试器一点一点扣出来的毛病,到他嘴里成他“一看就知道”了。最绝的是临下班,他扔给我一份新需求:“正好你调通顺了,这个新功能就加这里,很简单的,下班前给我。”

我看着屏幕左上角那个小小的红点图标,就是设置断点那个。心里突然琢磨,这玩意儿要是能设置成人生的断点多在这操蛋的地方停一下,然后直接跳到下一个能喘气的时刻。

相关推荐