透彻掌握算法流程:在调试前,要对程序所基于的算法、实现的功能有清晰认知。例如,若编写的程序是用于图像滤波处理,需明确采用的是均值滤波、中值滤波还是其他滤波算法,了解该算法中每个步骤如何对图像像素进行操作,像均值滤波是如何取邻域像素求平均来替换中心像素值的,这能帮助确定调试时重点关注的代码部分。
梳理代码结构与调用关系:仔细梳理程序中函数与模块间的调用关系,明确主函数如何调用子函数、各个子函数之间是否存在相互调用等情况。比如一个复杂的数值模拟程序,可能包含初始化函数、计算核心函数、结果输出函数等,清楚它们的先后调用顺序以及传递的数据内容,有助于快速定位错误所在的大致范围。
设置断点:
基本操作:在 Matlab 编辑器中,可以通过点击代码行号旁边的空白区域来设置断点(再次点击可取消断点),程序运行到设置了断点的位置时会暂停,方便查看此时各变量的值、程序的执行状态等信息。例如,若怀疑某段循环内的计算有误,可在循环开始处设置断点,当程序运行到此处暂停后,深入查看循环相关变量的初始值等情况。
条件断点:还可以设置条件断点,即仅当满足特定条件时,程序运行到此处才会暂停。比如在一个遍历数组的循环中,只想在数组元素值大于 10 时暂停程序查看情况,就可以设置条件断点,指定相应的条件表达式,这样能更精准地定位到关心的程序执行时刻。
单步执行:
逐行执行:Matlab 提供了单步执行功能,可通过调试工具栏中的相应按钮(如 “Step” 按钮,一般图标类似一个向右的箭头)实现逐行执行代码,每执行一行就能查看该行代码执行后变量的变化情况,对于排查逻辑错误、变量赋值错误等非常有帮助。例如,在执行包含多个数学运算的函数时,逐行查看变量经过每一步运算后的结果是否符合预期。
步入 / 步出函数:当执行到调用函数的代码行时,有 “Step Into”(步入)和 “Step Out”(步出)操作。“Step Into” 可以进入被调用的函数内部,继续逐行查看函数内代码的执行情况;“Step Out” 则是当不想继续查看函数内剩余代码执行细节时,快速执行完当前函数并返回到调用该函数的位置继续后续代码的执行,便于聚焦关键代码区域和把控整体执行流程。
查看变量值:
在调试窗口查看:在程序暂停(如在断点处暂停)时,Matlab 的调试窗口会显示当前作用域内的变量及其值,可直观地查看变量的具体内容,判断其是否符合预期。比如在处理矩阵运算的程序中,查看矩阵变量经过一系列操作后的维度、元素值等是否正确。
命令行查看:也可以在命令行中输入变量名来查看变量的值,这种方式在需要快速查看某个特定变量或者进行一些简单的临时验证时比较方便,例如查看某个临时计算得到的中间变量的值来辅助判断程序逻辑是否正确。
为什么要讲这方面内容呢?下面的视频给你解答!看完后需要你举一反三的操作哦!
理论知识用软件实现可以加深理解!这是第一步!后续将理论知识实践化是第二步,难度不一样,当然也要通过软件来实现实践这个过程。如果理论知识有遗忘,请拿起书本复习一下,此刻的复习会事半功倍!2023年暑假在家直播讲课超过十个小时,希望能让学生们的知识在假期也有所提升!时不我待!再一起来看看课堂上的讲解吧!可惜的是学生基本没有互动,讲了个寂寞。
2024年,本章的视频课程来啦!
未完,待续!
修订记录
20220628 完成初稿;
20230819 修订内容v2;
20231202 修订内容v3;
20241123 修订内容v4;