2.6 VI的调试方法
在编写了LabVIEW的程序代码后,一般需要对程序进行调试。调试的目的是保证程序没有语法错误,并且能够按照用户的目的正确运行,得到正确的结果。
LabVIEW提供了强大的容错机制和调试手段,例如设置断点调试和设置探针,这些手段可以辅助用户进行程序的调试,发现并改正错误。本节将主要介绍LabVIEW提供的用于调试程序的手段以及调试技巧。
2.6.1 找出语法错误
LabVIEW程序必须在没有基本语法错误的情况下才能运行,LabVIEW能够自动识别程序中存在的基本语法错误。如果一个VI程序存在语法错误,则程序框图窗口工具栏上的“运行”按钮将会变成一个折断的箭头,表示程序存在错误不能被执行。单击“运行”按钮,会弹出错误列表,如图2-46所示。
单击错误列表中的某一错误,列表中的“详细信息”栏中会显示有关此错误的详细说明,以帮助用户更改错误。单击“显示警告”复选框,可以显示程序中的所有警告。
当使用LabVIEW的错误列表功能时,有一个非常重要的技巧,就是当双击错误列表中的某一错误时,LabVIEW会自动定位到发生该错误的对象上,并高亮显示该对象,如图2-47所示,这样,便于用户查找错误,并更正错误。
图2-46 错误列表
图2-47 高亮显示程序中的错误
2.6.2 设置断点调试
为了查找程序中的逻辑错误,用户也许希望程序框图一个节点一个节点地执行。使用断点工具可以在程序的某一地点暂时中止程序执行,用单步方式查看数据。当不清楚程序中哪里出现错误时,设置断点是一种排除错误的手段。在LabVIEW中,从工具选板选取断点工具,如图2-48所示。在想要设置断点的位置单击鼠标,便可以在那个位置设置一个断点。另外一种设置断点的方法是在需要设置断点的位置单击鼠标右键,从弹出的快捷菜单中选择“设置断点”,即可在该位置设置一个断点。如果想要清除设定的断点,只要在设置断点的位置单击鼠标即可。
断点的显示对于节点或者图框表示为红框,对于连线表示为红点,图2-34中程序设置断点后的程序框图如图2-49所示。
图2-48 设置断点
图2-49 设置断点后的程序
运行程序时,会发现程序每当运行到断点位置时会停下来,并高亮显示数据流到达的位置,用户可以在这个时候查看程序的运算是否正常,数据显示是否正确。
程序停止在断点位置时的程序框图如图2-50所示。从图中可以看出,程序停止在断点位置,并高亮显示数据流到达的对象。按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。你也可以单击暂停按钮,这样程序将连续执行直到下一个断点。当程序检查无误后,用户可以在断点上单击鼠标以清除断点。
图2-50 运行带有断点的程序
2.6.3 设置探针
在有些情况下,仅仅依靠设置断点还不能满足调试程序的需要,探针便是一种很好的辅助手段,可以在任何时刻查看任何一条连线上的数据,探针犹如一颗神奇的“针”,能够随时侦测到数据流中的数据。
在LabVIEW中,设置探针的方法是用工具选板中的探针工具,如图2-51所示,单击程序框图中程序的连线,这样可以在该连线上设置探针以侦测这条连线上的数据,同时在程序上将浮动显示探针监视窗口。要想取消探针,只需要关闭浮动的探针监视窗口即可。
设置好探针的程序框图如图2-52所示。运行程序,在探针监视窗口中将显示出设置探针处的数据。
图2-51 设置探针
图2-52 设置好探针的程序程序框图
利用探针可以检测数据的功能,可以了解程序运行过程中任何位置上的数据,即可知道数据流在空间的分布。利用上面介绍的断点,可以将程序中止在任意位置,即可知道数据在任何时间的分布。那么综合使用探针和断点,就可以知道程序在任何空间和时间的数据分布了。这一点对LabVIEW程序的调试非常重要。
2.6.4 高亮显示程序的运行
有时希望在程序运行过程中,能够实时显示程序的运行流程以及当数据流流过数据节点时的数值,LabVIEW为用户提供了这一功能,这就是以“高亮显示”方式运行程序。
单击LabVIEW工具栏上的高亮显示程序“运行”按钮,程序将会以高亮显示方式运行。这时该按钮变为,如同一盏被点亮的灯泡。
下面以高亮的方式执行实例1的程序。在程序的运行过程中,程序框图如图2-53所示。在这种方式下,VI程序以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。这样,就可以根据数据的流动状态跟踪程序的执行,可以很清楚地看到程序中数据流的流向,并且可以实时地了解每个数据节点的数值。
图2-53 以“高亮”方式运行程序
在多数情况下,需要结合多种方式调试LabVIEW程序,例如可以在设置探针的情况下,高亮显示程序的运行,并且单步执行程序。这样程序的执行细节将会一览无余。
2.6.5 单步执行和循环运行
单步执行和循环运行是LabVIEW支持的两种程序运行方式,和正常运行方式不同的是,这两种运行方式主要用于程序的调试和纠错。它们是除了设置断点和探针两种方法外,另外一种行之有效的程序调试和纠错机制。
在单步执行方式下,用户可以看到程序执行的每一个细节。单步执行的控制由工具栏上的三个按钮(开始单步入执行)、(开始单步跳执行)和(单步步出)完成。这三个按钮表示三种不同类型的单步执行方式。(开始单步入执行)表示单步进入程序流程,并在下一个数据节点前停下来;(开始单步跳执行)表示单步进入程序流程,并在下一个数据节点执行后停下来;(单步步出))表示停止单步执行方式,即在执行完当前节点的内容后立即暂停。
下面仍旧结合实例1介绍单步运行调试程序的方法。
单击(开始单步入执行)按钮,程序开始以单步方式执行,程序每执行一步,便停下来并且高亮显示当前程序执行到的位置,如图2-54所示。
图2-54 单步执行程序
在LabVIEW中支持循环运行方式,LabVIEW中的循环运行按钮为。所谓循环运行方式,是指当程序中的数据流流经最后一个对象时,程序会自动重新运行,直到用户手动按下“停止”按钮为止。