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