调试。

以前咱们写课后习题,一般也不需要使用调试,如果程序编译error,根据错误信息就可以改好;如果是结果错误,那么在稿纸上过几遍基本也可以得出结果。
但咱们这个课设比较大,就需要很多调试的过程,尤其是在链表/开关变量的调试上。其实我对调试也不是很了解,但我跟大家分享一些我所接触到的调试方式。

F10和F11是非常常用的,两者的区别是F11是单步调试,但是会进入到子函数中。F10的话也是单步,但是会跳过模块。感觉平时用F10更多一些。在
用单步调试时,监测变量的窗口可以智能显示出你可能要看的变量的值,相当方便。比如咱们可以用单步调试的功能,看看程序的流程是怎么走的,这样可以看出很
多问题,比如程序的条件判断、分支流程是不是走错了。

说到变量监测,也可以手动添加你想看的变量,甚至是表达式的值。可能需要手动添加,很方便,大家自己看一看。

但是咱们的课设有个很大的障碍,就是在EasyX编出来的窗口运行时,似乎是不能同时调试的,如果想调试,就得把运行中断,或者说暂停;还有一个问题,就
是如果程序写了很长,但咱们只需要在一个小部分中单步调试,总不能从头单步调试吧?或者有一个循环循环了几百次,但用单步调试的话就得按好几百次按键。所
以咱们经常需要使用断点这个功能。在代码的行数左侧的空白处单击一下,就可以添加一个红色的实心圆,这就代表添加了一个断点。在调试模式下,程序运行到断
点时就会暂停。这时候就可以比较方便的看变量的值,按需做出调整。举个例子,咱们在需要仔细单步调试的部分之前添加一个断点,想办法让程序运行到断点,程
序会暂停,然后就可以用F10一步一步的走。

咱们一般是用F7进行编译,Ctrl+F5运行,而F5就是调试。断点的话也有快捷键,但一般用鼠标来点就够用了。

条件断点也是个很不错的功能,可以有条件地中断程序。其实C语言中还有个很好用的断言功能,但我也没怎么用过,暂且按下不表。断言功能举个例子,比如我有
个变量,flag_status,如果是1就运行程序,0是暂停程序。那咱们可以在某处添加一个断点,断点的条件是"1 ==
flag_status",那就只有在程序在运行状态时才会执行这个断点。这个用处还是挺多的,可以节省很多调试的时间或者脑力。

其实咱们这个课设的弹性是很大的,我个人的感受是,有些微小的BUG改起来是极为耗费时间和脑力的,有些BUG越改问题越多,但改完以后,很可能都不会被
看你程序的人注意得到。所以很多调试工作在我看来都是一个对自己负责的工作,而不是对老师,或者是对最后的分数负责的工作。

04-27 02:32