LabVIEW程序的调试方式

图 7 Breakpoint Manager对话框
1.4高亮工具(Highlight)
高亮工具是LabVIEW相对于传统的文本式语言的IDE环境所独有的调试工具,也是数据流程序设计思想的一种体现。打开工具栏中的Highlight工具(如图 8所示)并单击“Run”按钮,程序开始在Highlight模式下运行。此时根据数据流的运行顺序,LabVIEW将在各个节点的输入和输出的端子上显示当前端子上的数据,并且以小圆点的方式显示数据流的执行方式。程序员可以比较清楚地观察到数据流的走向以及源代码的执行情况,这极大地方便了LabVIEW开发者对某部分代码的详细调试。
图 8 Highlight工具
对初学者而言,这种调试方式无疑是直观和清楚的。但是同时对一些VI也会带来一些影响,如某些对时间有着严格控制的VI。由于在Highlight模式中,LabVIEW会减慢程序执行的速度,因此有些与时间有关的事件或者Bug会被掩盖和忽略。这也是为什么有时候程序在Highlight模式下运行正常,而回到普通模式时却无法返回正确的结果。此时,就需要使用Breakpoint和Probe工具(下一小节介绍)联合调试,找到程序出现问题的原因。
1.5探针工具(Probe)
探针并不是LabVIEW所特有的调试工具,在很多的文本式语言的IDE中都存在着Watch窗口用来实时监视某些变量的值,LabVIEW中的探针与此类似,也是用来实时监测程序背面板中任一连接线(不是任一节点)上的值。右击源代码中任一连线处,选择Probe菜单项将弹出当前位置的探针,如图 9所示。LabVIEW会自动判断当前位置的数据类型从而调用不同的探针以显示当前位置的数据。当VI的背面板关闭时,那么该VI中所有的探针窗口也会自动关闭。运行VI,当运行到探针的位置时将在探针窗口中立即显示当前的值。

图 9 Probe工具
为了定位到错误源或者找到某一时刻的运行结果,往往程序员需要配合断点和探针工具,在适当的位置增加断点,而适当的位置加入探针。或者直接设置探针工具,让探针捕获到某一特定的条件是程序暂停运行。如在图 9中,选择Custom Probe>>Conditional String Probe菜单项将弹出图 10所示的探针窗口。在Condition页中,可以设置程序暂停的条件。当满足该条件时,程序将立即在当前探针位置暂停。

图 10 Conditional String Probe
从图 9和图 10可以看出,探针的主要功能就是将当前连线上的数据以控件(Indicator)的形式表示出来。由于在LabVIEW中,数据的显示方式是可以自定义的,如使用Type Def.控件修改某些控件的外观或者将String控件以****的密码方式显示,因此LabVIEW提供了自定义探针技术允许程序员根据实际情况使用任意预定义的探针。
在图 9的快捷菜单中选择Custom Probe>>New…菜单项,将弹出图 11所示的自定义探针向导。程序员可以选择从现有的探针文件(从后面可以看出,事实上也是一个vi文件)新建探针或者直接新建一个空的探针。选择“Create a new probe”项。

图 11 Create New Probe_1
单击Next按钮进入图 12所示的界面。Filename表示探针文件的名字;Window title and shortcut menu name表示探针VI的标题栏名字同时也是使用探针时出现在快捷菜单中的名字;Directory to save the probe表示探针的存储位置。

图 12 Create New Probe_2
单击Save按钮,LabVIEW会自动生成图 13所示的探针VI。不要删除界面上的任何控件:
- String型控件表示探针位置当前的数值;
- Boolean型控件表示条件断点,当该值被设置为TRUE时,程序将在当前的断点处暂停。

图 13 String Probe_Custom.vi
本例将修改String Probe_Custom.vi(下载)使得程序以不同的方式显示String的值,并且设置为当值为“Hello”时暂停程序运行。如图 14所示,加入适当的代码,并调整Probe的前面板窗口大小(这也是最终探针的显示大小)。

图 14 修改后的String Probe_Custom.vi
新建一个VI,并加入一个String控件,此时在右键快捷菜单中选择Custom Probe>> My First String Probe菜单项,如图 15所示。

图 15 调用String Probe_Custom探针
此时,LabVIEW会自动调用String Probe_Custom.vi,并以探针窗口的样式显示,如图 16所示。在运行VI前修改Display Style中的值并运行VI,那么String显示框将自动以相应的方式显示数值。

图 16 String Probe_Custom探针窗口
从上面的调用过程可以看出,LabVIEW中的探针实际上是对VI的调用。因此,在编辑探针VI时需要遵循以下的原则:
- 不要在探针VI中加入任何等待或长时间执行的代码,如循环、事件、队列等,否则LabVIEW在运行时会自动挂起。
- 不要修改探针VI的默认属性,如设置为Modal等。但是可以修改它的标题栏和大小。
LabVIEW提供了一种工具允许程序中的连接线保留上一次的运行值。单击图 17中的“Retain Wire Values”按钮打开该工具,此时LabVIEW将保留当前VI上一次的运行值。当VI运行完成后,再次添加探针,则探针会自动立即显示该位置上一次的运行值。当然,这也会影响程序运行的效率,因此当VI退出内存时,LabVIEW会自动关闭该工具。

图 17 Retain Wire Values工具
1.6VI窗口管理(VI Windows)
在调试过程中,为了追踪子VI的运行状态,经常需要打开很多的VI窗口。往往在关闭这些窗口时反复地按下“Ctrl + W”键,LabVIEW提供了同时关闭这些VI的方法。单击Windows>>All Windows…(快捷点是Ctrl + Shift + W)菜单项,将弹出图 18所示的VI窗口管理对话框。选择需要关闭的窗口(可以使用Ctrl键或Shift键多选),单击“Close Windows”按钮就可以关闭选择的窗口。
图 18 VI窗口管理
【小技巧】
在LabVIEW中,按下Ctrl + Tab键能够在不同的LabVIEW窗口之间切换(Windows的Alt + Tab键是在所有的窗口之间切换)。
评论