Qizhen's profileLabVIEWPhotosBlogListsMore Tools Help

Blog


    断点和探针

    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》的其它文章

    编辑

    Comments (5)

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Qizhen Ruanwrote:
    转载是没有问题的,不过最好给出原文的连接地址,因为很多文章我写的时候比较匆忙,可能会有些错误,我会不断回头修改这些文章的。
    Sept. 18
    海军 于wrote:
    hehe首先我先say 声sorry,在没有你的同意下,我已经把你的关于labVIEW全部放到vihome网站上,:)请谅解
    Sept. 17
    海军 于wrote:
    这位大虾,您好,整整花了半天的时间浏览了你的大部分blog,尤其是关于labVIEW的,收益非浅吧,谢谢.我是上海普通一名测试工程师,也是对labVIEW比较感兴趣,从学校就开始用,然后毕业的时候,我自发组织了labVIEW技术论坛,过了几个月,我又推出LabVIEW的主站,目的,就是让更多的会员和朋友有这样一个可以互相交流的平台,因为交流实在太重要,特别是labVIEW这种时间还是不是用户很广语言开发平台,你的blog做得很不错,所以我希望你可以加入虚拟仪器之家大家庭来.帮助更多的需要帮助的人:)(www.vihome.com.cn  www.vifbbs.com)虚拟小强
    Sept. 17
    深圳leowrote:
     
     
    好专业的空间
     
    看得我糊里糊涂的
     
    看来需要学习的东西太多!
    Sept. 16
    是你加的我吗?来看看。
    Sept. 13

    Trackbacks

    The trackback URL for this entry is:
    http://ruanqizhen.spaces.live.com/blog/cns!5852D4F797C53FB6!1798.trak
    Weblogs that reference this entry
    • None