LabVIEW程序的调试方式

上传人:油条 文档编号:20261370 上传时间:2017-11-21 格式:DOC 页数:12 大小:527KB
返回 下载 相关 举报
LabVIEW程序的调试方式_第1页
第1页 / 共12页
LabVIEW程序的调试方式_第2页
第2页 / 共12页
LabVIEW程序的调试方式_第3页
第3页 / 共12页
LabVIEW程序的调试方式_第4页
第4页 / 共12页
LabVIEW程序的调试方式_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《LabVIEW程序的调试方式》由会员分享,可在线阅读,更多相关《LabVIEW程序的调试方式(12页珍藏版)》请在金锄头文库上搜索。

1、调试工具是任何一种程序开发环境都必须提供的功能,它们可以显著地提高程序员的开发效率。LabVIEW 作为一种图形化程序设计语言的 IDE 工具(同时也是一门独特的语言) ,自然需要考虑为工程师提供适合于图形化语言调试的工具。事实上,LabVIEW 并没有规定哪些工具被划分为调试工具,哪些工具被划分为其它的工具。这种界限和定义是比较模糊的,在实际使用中,我们可以把辅助程序员更准确、快捷地定位代码执行和 Bug 的工具统称为 “调试工具” 。LabVIEW 主要的调试工具位于工具栏,如图 1所示。从左至右依次是:(1) Run:运行,单击它会直接运行当前的 VI,快捷键 Ctrl + R。(2)

2、Run Continuously:连续运行。(3) Abort Execution:中止运行,单击它会停止当前运行的 VI。(4) Pause:暂停运行。(5) Highlight Execution:高亮执行工具,单击它程序会变慢,反映整个数据流运行的过程。(6) Retain Wire Values:单击它会保留当前连接线上的值(这一点在后面描述) 。(7) Start Single Stepping:单步执行,此时程序往前运行一个节点。(8) Step Over:跳过当前的节点。(9) Step Out:跳出单步执行。(10) Step Into:进入到某一个子 VI 中执行。其中(1)

3、(4)是常用的工具,用来控制 VI 的运行、暂停和停止;而(7)(10)是其它的程序设计语言的 IDE 环境均具备的,用法也没有其它的区别。因此,本文将着重介绍LabVIEW 中特有的程序调试工具或者方法。1 LabVIEW 的工具栏1.1 错误列表(Error List)LabVIEW 作为一种图形化的编译型语言,其编译的过程是在后台自动完成的(无需程序员手动编译) ,编译后的目标代码也存储在 vi 文件中。因此 LabVIEW 会“实时地”判断代码是否能够正常运行。当无法正常运行时,将弹出 Error List 对话框,列出当前 VI 继承中所有的错误,如图 2所示。对话框分为3个部分,分

4、别表示发生错误的 VIs、发生错误的节点和错误简单表述、错误的详细描述。双击某一个 VI 可以直接打开该 VI,双击某个错误节点可以直接定位到该节点节点。2 Error List 对话框通常使用该方式可以快速地定位发生错误的 VI 或节点,并根据错误描述进行修改。有时候会出现 LabVIEW 的“运行”箭头是断开,而 Error List 对话框中却没有显示任何错误的情况。这是由于 LabVIEW 在内存中的已编译代码无法执行,只需要把当前的 VI 重新强制编译即可,方法是在单击“运行”箭头的同时按住 Ctrl 键(LabVIEW 8.6.1之前的版本可能是 Ctrl + Shift 键) 。

5、1.2 VI 继承和调用( VI Hierarchy)LabVIEW 允许并且鼓励子 VI 的调用,因此 VI 之间存在着调用与被调用关系,LabVIEW 将这种关系以图形的方式表示出来,称之为“VI 继承” (动态调用的 VI 将不会显示其调用与被调用的关系) 。选择 ViewVI Hierarchy 菜单项,弹出 VI 之间的关系图,如图 3所示。3 VI Hierarchy从该图中可以迅速地看出当前 VI 的子 VI 以及被调用的 VI 之间的关系,双击某个 VI的图标可以快速地打开该 VI 前面板。【小技巧】双击某个 VI 图标的同时按住 Ctrl 键能够直接打开 VI 的后面板。当

6、LabVIEW 暂停在某个 VI 中时,会在背面板工具栏中显示当前 VI 被调用的 VIs 列表,如图 4所示。从图中可以看出,当前的 VI 正被1.vi 调用,单击该选项,可以看出整个被调用关系的列表 VIs。当从列表中选择某一个 VI 时,LabVIEW 会自动定位到该 VI。4 VI Caller Chain1.3 断点工具(Breakpoint)LabVIEW 运行对背面板中的任何一个节点和连线都可以设置断点,程序运行到断点位置时会暂停运行。在需要放置断点的位置上右击,选择弹出菜单中的 Breakpoint 菜单项,使用 Set Breakpoint 指令可以在当前位置放置一个断点,如

7、图 5所示。5 Breakpoint 快捷菜单当在已经存在断点的位置上右击鼠标时,会弹出图 6所示的快捷菜单。使用 Clear Breakpoint 菜单项可以清除当前的断点,而 Disable Breakpoint 可以禁止当前的断点,此时断点将不再暂停程序的执行。6 Breakpoint 快捷菜单在大型的程序调试中,断点往往是使用的最为频繁的工具,它使得程序员能够迅速地专注于所关心的 VI,而对于其它的 VI 执行过程则正常运行。通常,程序员为了找到某个Bug 出现的原因,会在背面板中设置若干个断点,而一旦清除掉 Bug 后又需要将这些断点一一地清除,这难免会重复和繁琐。LabVIEW 8

8、.6提供了一个断点管理的工具,可以选择图 5或图 6中的 Breakpoint Manager 菜单项,启动如所示的断点管理对话框(或者直接使用 ViewBreakpoint Manager 菜单项) 。该对话框中列出了当前内存中所有 VI 中包含的断点,程序员可以选择任意地断点批量地将它们清除或者禁设置为禁止状态。图 7 Breakpoint Manager 对话框1.4 高亮工具(Highlight)高亮工具是 LabVIEW 相对于传统的文本式语言的 IDE 环境所独有的调试工具,也是数据流程序设计思想的一种体现。打开工具栏中的 Highlight 工具(如图 8所示)并单击“Run”按

9、钮,程序开始在 Highlight 模式下运行。此时根据数据流的运行顺序,LabVIEW将在各个节点的输入和输出的端子上显示当前端子上的数据,并且以小圆点的方式显示数据流的执行方式。程序员可以比较清楚地观察到数据流的走向以及源代码的执行情况,这极大地方便了 LabVIEW 开发者对某部分代码的详细调试。8 Highlight 工具对初学者而言,这种调试方式无疑是直观和清楚的。但是同时对一些 VI 也会带来一些影响,如某些对时间有着严格控制的 VI。由于在 Highlight 模式中,LabVIEW 会减慢程序执行的速度,因此有些与时间有关的事件或者 Bug 会被掩盖和忽略。这也是为什么有时候程

10、序在 Highlight 模式下运行正常,而回到普通模式时却无法返回正确的结果。此时,就需要使用 Breakpoint 和 Probe 工具(下一小节介绍)联合调试,找到程序出现问题的原因。1.5 探针工具(Probe )探针并不是 LabVIEW 所特有的调试工具,在很多的文本式语言的 IDE 中都存在着Watch 窗口用来实时监视某些变量的值,LabVIEW 中的探针与此类似,也是用来实时监测程序背面板中任一连接线(不是任一节点)上的值。右击源代码中任一连线处,选择 Probe 菜单项将弹出当前位置的探针,如图 9所示。LabVIEW 会自动判断当前位置的数据类型从而调用不同的探针以显示当

11、前位置的数据。当VI 的背面板关闭时,那么该 VI 中所有的探针窗口也会自动关闭。运行 VI,当运行到探针的位置时将在探针窗口中立即显示当前的值。9 Probe 工具为了定位到错误源或者找到某一时刻的运行结果,往往程序员需要配合断点和探针工具,在适当的位置增加断点,而适当的位置加入探针。或者直接设置探针工具,让探针捕获到某一特定的条件是程序暂停运行。如在图 9中,选择 Custom ProbeConditional String Probe 菜单项将弹出图 10所示的探针窗口。在 Condition 页中,可以设置程序暂停的条件。当满足该条件时,程序将立即在当前探针位置暂停。10 Condit

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

13、reate 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。不要删除界面上的任何控件:(1) String 型控件表示探针位置当前的数值;(2) Boolean

14、型控件表示条件断点,当该值被设置为 TRUE 时,程序将在当前的断点处暂停。实际上,程序员可以任意修改这两个控件的外观,如设置为自定义类型、修改控件的Label 或 Caption,甚至可以在当前 VI 中加入新的控件。但是最好不要修改控件的类型和Connection(输入输出连接端子)定义方式,因为 LabVIEW 会根据控件的类型选择在不同的位置调用不同的探针 VI。13 String Probe_Custom.vi本例将修改 String Probe_Custom.vi( 下载 )使得程序以不同的方式显示 String 的值,并且设置为当值为“Hello”时暂停程序运行。如图 14所示,

15、加入适当的代码,并调整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、显示数值。16 String Probe_Custom 探针窗口从上面的调用过程可以看出,LabVIEW 中的探针实际上是对 VI 的调用。因此,在编辑探针 VI 时需要遵循以下的原则:(1) 不要在探针 VI 中加入任何等待或长时间执行的代码,如循环、事件、队列等,否则LabVIEW 在运行时会自动挂起。(2) 不要修改探针 VI 的默认属性,如设置为 Modal 等。但是可以修改它的标题栏和大小。只有当程序运行到探针位置时,探针窗口才显示当前运行值,并且这些值在连线中不会保存。也就是说如果需要探测某个位置的值必须要在运行之前在该位置加入探针,否则如果是在程序运行之后再次加入探针,那么这些新加入的探针将无法显示程序之前的运行值。LabVIEW 提供了一种工具允许程序中的连接线保留上一次的运行值。单击图 17中的“Retain

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号