断点和探针

1. 断点

    断点和探针是调试 LabVIEW 代码时最常用的两个工具。LabVIEW 中的断点在使用和功能上都比较简单、直观:使用工具选板上的断点工具,在想要设置或者取消断点的代码处点击鼠标即可;或直接在程序框图的节点、数据线上右击鼠标,就可以看到设置或取消断点的菜单项。
    断点几乎可以设置在程序的任何部分。当程序运行至断点处,就会暂停,等待调试人员的下一步操作。很多其他语言的调试环境都有条件断点,LabVIEW 的端点没有类似的设置,LabVIEW 是使用条件探针来实现条件断点功能的。
    断点是会保存在 VI 中的。关闭带有断点的 VI,程序执行至断点处还是会停下来,并且这个 VI 会被自动打开。
    如果某个 VI 不允许你设置断点,很可能这个 VI 被设为不允许调试了。此时,只要在 VI 属性中重新设置一下即可。(LabVIEW 的调试环境.2

2. 探针

    探针的功能类似于其他语言调试环境中的查看窗口,用于显示变量当前状态下的数据。LabVIEW 与其他语言不同之处在于,LabVIEW 是数据流驱动型的图形化编程语言。LabVIEW 中的数据传递主要不是使用变量,而是通过节点之间的连线完成的。所以 LabVIEW 的探针也不是针对变量的,而是加在某根数据线上的。
    LabVIEW 的探针也是图形化显示的。比如为一根数字类型的数据线加探针,探针一般就是一个数字型显示控件,见图1。Error Cluster 类型的数据线的探针,则看上去就像是个 Error Cluster,见图2。


图1、图2:数值型和错误信息型数据线的探针

3. 选取其他类型控件作为探针

    如果你觉得 LabVIEW 默认的探针不美观或不适用,则可以在数据线上点击鼠标右键,选择 Custom Probe -> Controls -> … 选取一个其他控件作为探针,如图3。但是要注意,你选取的控件的数据类型要与数据线的数据类型一致才可以。


图3:使用仪表盘控件作为数值型数据线的探针

4. 条件探针

    在你设置断点后,程序在每次执行到断点的时候都会停下来。但有的时候,调试者希望程序只在被监测的数据满足某一条件时,才暂停运行。比如,被监测的数据在正常情况下应大于零,调试者希望一旦数据小于零则暂停。在 LabVIEW 中,可以使用条件探针来实现这样的功能。

 
图4:数值型条件探针

    以图4 为例,如果你希望程序中的循环在运行 8 次以后才停下来,就可以使用条件探针。在记录循环次数的 i 的输出数据线上点击鼠标右键,选择 Custom Probe 下以 Conditional 开头的探针,打开探针上的 Condition 页,就可以设置条件了。此时,若被探测的数据满足你所设置的条件,程序就会暂停。

5. 用户自定义探针

    如果你觉得 LabVIEW 自带的探针功能还不够强大,或者你自己创建了一种数据类型,而LabVIEW 没有适合它的探针,这时你可以自己创造一个满意的探针出来。
    用户自定义的探针其实也是一个 VI。LabVIEW 自带了一些已经做好的探针,这些探针都被放置在 <lvdir>\vi.lib\_probes 文件夹下。你可以打开这里面的 VI 看一看已有的自定义探针是如何做的。比如我们在图4 中所使用的 I32 型条件探针的 VI 是 ConditionalSigned32.vi。    
    需要新建一个自定义探针时,先在数据线上点击鼠标右键,选择 Custom Probe -> New。这时 LabVIEW 会弹出一个向导界面。按照向导的提示,输入所需信息,LabVIEW 会为你生成一个用作探针的 VI 框架,对这个 VI 稍作修改,即可成为一个新的探针。
   这个探针 VI 有一个输入和一个输出。输入的是被探测的数据,输出是一个布尔类型,表示程序是否需要暂停。这个 VI 的界面也就是探针的外观。探针所实现的功能完全依赖于如何对其编程。

相关文章:
    LabVIEW 的调试环境
   《我和 LabVIEW》的其它文章

编辑

Advertisements

8 thoughts on “断点和探针

  1. Pingback引用通告: 博客版《我和LabVIEW》目录 « 凡人琐忆

  2. Pingback引用通告: LabVIEW 代码中常见的错误 « 凡人琐忆

  3. Pingback引用通告: LabVIEW 的调试环境 « 凡人琐忆

  4. 转载是没有问题的,不过最好给出原文的连接地址,因为很多文章我写的时候比较匆忙,可能会有些错误,我会不断回头修改这些文章的。

  5. hehe首先我先say 声sorry,在没有你的同意下,我已经把你的关于labVIEW全部放到vihome网站上,:)请谅解

  6. 这位大虾,您好,整整花了半天的时间浏览了你的大部分blog,尤其是关于labVIEW的,收益非浅吧,谢谢.我是上海普通一名测试工程师,也是对labVIEW比较感兴趣,从学校就开始用,然后毕业的时候,我自发组织了labVIEW技术论坛,过了几个月,我又推出LabVIEW的主站,目的,就是让更多的会员和朋友有这样一个可以互相交流的平台,因为交流实在太重要,特别是labVIEW这种时间还是不是用户很广语言开发平台,你的blog做得很不错,所以我希望你可以加入虚拟仪器之家大家庭来.帮助更多的需要帮助的人:)(www.vihome.com.cn  http://www.vifbbs.com)虚拟小强

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s