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

成为LabVIEW漏洞修复高手

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

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

利用探针

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

保存连线值功能

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

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

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

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

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

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

调用时挂起

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

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

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

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

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

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

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

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

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

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

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

执行跟踪

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

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

跟踪磁盘或内存

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

NI LabVIEW桌面执行跟踪工具包

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

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

单元测试

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

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

适用于每个LabVIEW开发者的巧妙调试技巧

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

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

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

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

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

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

换一批

延伸阅读

[新鲜事] 移动安全公司和开发者并非对立关系

移动安全公司和开发者并非对立关系

本文是金山网络CTO徐鸣在近日(10月14日)召开的2012 eoe移动开发者大会上做的演讲,演讲原主题为《Android应用的隐私与安全》。在演讲中徐鸣针对从移动安全公司的角度讲述了金山眼中的移动安全市场的问题和机会,在最......

关键字:移动安全 开发者

[新鲜事] 一个开发者眼里的移动互联网生态系统

一个开发者眼里的移动互联网生态系统

回复@敞开了关注:YiBo已经停止更新,团队解散了。为了防止用户白白捐赠了,所以关掉了。不过服务器运行还是会支持一段时间,以保证用户有一段时间迁移。我们十分抱歉,感谢大家的支持。 //@敞开了关注:下载应用了积分......

关键字:开发者 移动互联网 生态系统

[新鲜事] iPad Mini对开发者意味着什么?

iPad Mini对开发者意味着什么?

iPad Mini的最新消息是将只发布Wifi版本,虽然官方未作任何声明,但很有可能缩小版的iPad平板在本月底就能面市了。用户们听到这个消息通常很兴奋,因为这意味着更多的选择,对开发者来说,则意味着更多的头痛,因他们......

关键字:iPad Mini 开发者

[新鲜事] 传工信部酝酿APP备案制 对开发者是福是祸?

传工信部酝酿APP备案制 对开发者是福是祸?

昨日,工信部酝酿APP(第三方应用程序) 备案的消息在业界引发热议,并且还传将完善备案——审核——监督——抽查等各种手段。此消息对一众APP开发者又是一个考验。因为目前......

关键字:APP 工信部 开发者

[新鲜事] 痛苦or无奈?开发者到底怎么对待游戏BUG

痛苦or无奈?开发者到底怎么对待游戏BUG

BUG,或者更正经地说叫程序错误,最普遍的定义是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。BUG的原意是虫子,史上第一个BUG的起因是一只飞蛾飞入电脑中引起了故障,人们因此用这个词来指代程序错误。......

关键字:开发者 游戏BUG BUG修复

[真心话] 联发科在高端市场超越高通并非不可能

联发科在高端市场超越高通并非不可能

前些天,据媒体报道,联发科有意收购英伟达,或达成合作关系,布局IOT进军车联网,笔者认为可能性极大,且对于联发科对攻高通高端市场是有益的互补。毕竟,移动终端市场已经是血海一片,联发科需要可持续的发展动力来强化其芯片领域的竞争力,包括高通、I......

关键字:联发科 竞争力 开发者 可能性 物联网

[新鲜事] 开发者焦虑:Android用户近60%仍使用2.3版本

开发者焦虑:Android用户近60%仍使用2.3版本

谷歌官方Android开发者论坛本周宣布,Android 2.3仍是目前用户最多的Android终端版本,占比接近60%。来自Google Play应用商店的数据显示,在9月4日的前14天中,Android 2.3“姜饼&rdq......

关键字:Android 60% 2.3 开发者

[猎聘集] 外行CEO如何招到内行开发者?

外行CEO如何招到内行开发者?

随着软件产业的兴起,许多公司不管主业跟软件相不相关都要聘个开发者拓展业务,要知道外行CEO想招个软件开发者不容易,但下面有些建议可以你帮你慧眼识人才:1. 拥抱开源软件许多非开发者经理和CEO对于开源还不是很敏......

关键字:CEO 开发者

[新鲜事] 华为Nexus或有指纹识别和USB-C

华为Nexus或有指纹识别和USB-C

在今年的GoogleI/O2015发布会上,我们已知Android M将支持指纹传感器和USB-C的消息。在Google提及这些新特性时,开发者们自然知道将于今年晚些时候到来的新款Nexus设备才是它们的绝配。说到USB-C,未来......

关键字:笔记本电脑 智能机 发布会 传感器 开发者

[新鲜事] 洪亮:iOS6亲用户疏开发者

洪亮:iOS6亲用户疏开发者

国内有不少苹果用户更新到iOS6了,iOS6的出现,会对用户以及开发者形成什么样的影响?我们整理了前空中网iPhone项目负责人洪亮的几条微博。首先从用户体验上来讲:打字不愁了,因为他的这几条微博都是利用语音发出来的......

关键字:iOS6 开发者

[新鲜事] 云计算首个行业安全标准: 数据归客户所有

云计算首个行业安全标准: 数据归客户所有

国内云计算行业的第一个数据安全保护倡议,在阿里云与浪潮、用友、intel等业内大型厂商的联合推动下终于诞生,但在相关立法的滞后性面前,保护用户数据安全的目标仍然任重道远。在7月22日中发布的这份《数据保护倡议书》中,数据归属权问题成为核心焦......

关键字:云计算平台 阿里云 数据安全 倡议书 开发者
条评论

我 要 评 论

网友评论

技术子站

更多

推荐博客