当前位置:首页 > 测试测量 > 测试测量
[导读]成为LabVIEW漏洞修复高手如果您经常使用NI LabVIEW软件,当软件不能按照预期的情况运行时,您可能会有一个自己的调试技巧和技术工具箱。 这些技巧和技术有些是常用的,而剩下的可能是您自己摸索出来的。图1.巧妙的调

成为LabVIEW漏洞修复高手

如果您经常使用NI LabVIEW软件,当软件不能按照预期的情况运行时,您可能会有一个自己的调试技巧和技术工具箱。 这些技巧和技术有些是常用的,而剩下的可能是您自己摸索出来的。

图1.巧妙的调试方法能够清除漏洞。 (Brian Searle摄)

我们与JKI的LabVIEW程序架构师 ( Certified LabVIEW Architects, CLA ) 以及LabVIEW社区的朋友进行了交流,向他们学习一些快速识别、隔离和修复漏洞的“绝密”技巧。我们了解到以下几个巧妙的调试技巧。

利用探针

探针是LabVIEW调试的第一个也是最简单的工具,但它们却是非常强大的工具。您可极其轻松地将探针置于线路上,在查找问题过程中不断获取信息。 以下是探针的几个功能:

保存连线值功能

LabVIEW开发环境中的保存连线值功能经常会被忽略。 当您启用某个VI的连线值保存功能时,LabVIEW将自动存储该VI框图上每根连线的最后一个值。 然后,将光标悬停在任一连线上,即使该VI未运行,探针工具也将出现提示信,显示该连线最后一个值。

图2.保存连线值按钮就在“灯泡”图标旁边。

自定义探针,无需编写任何代码

运用LabVIEW自定义探针,您无需编写任何代码就可创建强大、复杂的调试工具。 例如,您可在“自定义探针”>>“控件”>> “波形图”中创建显示任意数字连线的先前值的“历史探针”。 这可帮助您发现您正在探究的数据的模式或趋势,而无需编写特殊的探针代码。

图3. 使用波形图探针显示简单数字连线的历史值。

从LabVIEW工具网络获取自定义探针

借用他人创建的探针来扩展您的工具箱。 SAPHIR在LabVIEW工具网络上提供了一系列免费的自定义LabVIEW探针。 您只需下载安装VI软件包管理器 (VIPM)社区版(也是免费的)、搜索ViBox,再通过几次单击就可安装探针。

如果您正在使用LabVIEW 2011,您还可通过单击LabVIEW入门指南窗口的“查找LabVIEW附加工具...”从LabVIEW工具网络上获取ViBox。

图4.使用VIPM安装SAPHIR自定义探针。

调用时挂起

许多LabVIEW程序架构师甚至不知道LabVIEW具备该项功能。“调用时挂起”功能可将执行挂起,使您可以进行以下任一或所有操作:

1. 在VI运行之前随意更改VI的控件值。

2. VI返回调用程序时随意更改显示件的值。

3. 重复运行VI,而无需将执行返回至调用程序。

4. 完全跳过VI执行,返回至调用VI。

图 5. 在子VI节点设置窗口中,选择“调用时挂起”功能。

对于调用时挂起功能,NI做了简要说明,见此处。 然而,熟悉该功能的最佳方法还是亲自动手实践。

未连线的前面板控件和显示件

为FIRST(崇尚发扬科学技术)机器人竞赛团队推荐了一项技术,这项技术对于专业的LabVIEW开发人员也非常有用

Ben建议在VI中添加前面板控件或显示控件,但并不与连线板连接。 这些控件和显示件与“调试”输入或输出工作方式类似,您可在测试时对其进行手动控制。 这可使您更容易在应用中生成偶然或极端事件,而无需繁多的支持或仿真代码的写入。

您还可以在已建应用程序中使用这些调试控件和显示件,前提是LabVIEW应用程序生成器包含了VI前面板。

参阅LVMastery.com上的介绍,进一步了解Ben建议的调试子VI。

执行跟踪

如果其他方法都失败的情况下,有时您所能做的只有逐步跟踪代码。 遇到此类问题时,您可通过几种方法在LabVIEW内进行执行跟踪。

最明显的方法是使用LabVIEW中内置的“高亮显示执行”功能,也称为“灯泡”。 如果说探针是LabVIEW调试的首要工具,灯泡则位列第二。 但是,如果碰到复杂或是时间相关的漏洞,您则可选择其他更有效的工具。

图6. 执行跟踪功能比灯泡功能更多。

跟踪磁盘或内存

启动执行跟踪的一个简单方法是在其中一个子VI中记录一个连线值。 您可编写一个简单的VI,将该值记录到文件中,或甚至可创建一个自定义探针来显示连线的历史值。 通常通过这样一个简单的跟踪您就可收集足够的信息来帮助您找到漏洞的原因。

NI LabVIEW桌面执行跟踪工具包

如果要调试一个大型的高度并行应用程序,则包含NI开发者套件 2011的LabVIEW桌面执行跟踪工具包就是您进行LabVIEW代码分析的“利器”。 它可提供关于正在运行的应用程序的各种信息,包括详细的内存分配和再分配、事件生成、由代码定义的自定义信息。 Austin LabVIEW程序架构师论坛的创建人之一Fabiola De la Cueva指出该工具包可用于调试已崩溃的应用程序,因为它是独立于LabVIEW之外运行的。

图7. 手动执行追踪具有风险(图片采自Oliver Widder)

专业的LabVIEW开发人员很庆幸,因为LabVIEW桌面执行跟踪工具包已包含在NI开发者套件2011之中,不会产生额外的费用。

单元测试

测试驱动开发(TDD) 是一种软件工程技术,可帮助您从头创建更好的代码,同时它也是帮助您调试现有代码的一个有效工具。

在TDD中,当您发现应用程序存在漏洞时,调试流程的第一个步骤就是创建一个可重现漏洞并导致测试失败的单元测试。只有到那时候,您才确实可以开始尝试修复问题。 如果单元测试通过,则表明您已清除了该漏洞。

图8. 你在哪里测试代码?

这种漏洞修复方法需要费点时间,但是相比其他较不精确的方法,它具有以下几个优点:

1. 单元测试具有可追溯性,可完整显示漏洞的发生过程以及您如何将漏洞隔离

2. 您或其他开发者可随时轻松验证或重新验证您的修复,而无需记住激活漏洞的详细信息。

3. 单元测试可在您的项目中与其他测试一起自动执行,因此漏洞如果再次出现,您可以立即知晓。

针对单元测试有两个主要的LabVIEW附加工具,TDD方法可以与另一个一同使用。 查看JKI的免费VI测试仪LabVIEW附加工具或参阅Eli Kerry的LabVIEW软件工程指南,进一步解LabVIEW单元测试框架工具包,它已包含在NI开发者套件之内。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

NI提供的软件包经济省时,不仅帮助开发人员节省时间,还为创客提供了新的机遇

关键字: LabVIEW 自动化测试系统

强大的图形化编程工具使整个测试和测量过程的各个方面实现可视化

关键字: LabVIEW 图形化编程工具

昆山2023年9月15日 /美通社/ -- 万豪旅享家旗下31个非凡品牌之一的万枫酒店今日宣布,昆山万枫酒店盛大开业。昆山市是首批"国家生态园林城市",旅游资源丰富,素有"百戏之祖,昆曲之乡...

关键字: 液晶电视 灯光 调试 高铁

覆盖华东、华北和西部的三大客户创新与应用中心在两年内相继开业 以客户为中心的本地化战略迎来重要里程碑 成都2023年9月7日 /美通社/ -- 生命科学集团赛多利斯持续扩张在华足迹,并于今日正式启用西部区...

关键字: 质量检测 仪器 生物技术 调试

北京2023年9月4日 /美通社/ -- 随着生成式AI的迅速发展,云厂商的AI开发者服务能力成为业界焦点。日前,Gartner®发布了《2023年云AI开发者服务魔力象限》报告[1]。亚马逊云科技在报告中被列为...

关键字: 亚马逊 开发者 GARTNER AI

(全球TMT2023年8月24日讯)2023年8月23日,时值实时3D引擎Unity在华设立合资公司Unity中国一周年之际,Unity中国正式推出Unity中国版引擎——团结引擎。Unity全球CEO John Ri...

关键字: UNITY CE Android 开发者

上海2023年8月23日 /美通社/ -- 2023年8月23日,时值全球领先的实时3D引擎Unity在华设立合资公司Unity中国一周年之际,担负着赋能本土开发者、服务国内...

关键字: UNITY 开发者 微信小游戏 进程

(全球TMT2023年8月14日讯)亚马逊云科技日前宣布在以色列(特拉维夫)推出亚马逊云科技基础设施区域。亚马逊云科技的区域由一个地理区域内的多个相互独立、且在物理上分隔的可用区组成。亚马逊云科技以色列(特拉维夫)区域...

关键字: 亚马逊 应用程序 开发者 数据中心

(全球TMT2023年8月4日讯)CSDN、《新程序员》在去年ChatGPT横空出世之后,发起了一份围绕开发者现状、人工智能和物联网、云原生、数据库、操作系统、芯片、开源的深度调查问卷,此问卷也融合了各个领域对生成式A...

关键字: 开发者 人工智能 操作系统 PYTHON

新北市2023年8月3日 /美通社/ -- 安提国际推出了基于NVIDIA Jetson Orin系统模块(system-on-module;SoM)的全新无风扇边缘计算系统。这些具紧凑硬件结构与外观的嵌入式系统支持NV...

关键字: NVIDIA JETSON AI 开发者
关闭
关闭