欢迎来到天天文库
浏览记录
ID:28149141
大小:222.00 KB
页数:9页
时间:2018-12-08
《适用于每个LabVIEW开发者的巧妙调试技巧.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、适用于每个LabVIEW开发者的巧妙调试技巧 作者:OmarMussa,程序架构师和专业服务经理,NI联盟伙伴JKI JusTInGoeres,程序架构师和产品市场经理,NI联盟伙伴JKI 成为LabVIEW漏洞修复高手 如果您经常使用NILabVIEW软件,当软件不能按照预期的情况运行时,您可能会有一个自己的调试技巧和技术工具箱。这些技巧和技术有些是常用的,而剩下的可能是您自己摸索出来的。 图1.巧妙的调试方法能够清除漏洞。(BrianSearle摄) 我们与JKI的LabVIEW程序架构师(CerTIfiedLabVIEWArchitec
2、ts,CLA)以及LabVIEW社区的朋友进行了交流,向他们学习一些快速识别、隔离和修复漏洞的“绝密”技巧。我们了解到以下几个巧妙的调试技巧。 利用探针 探针是LabVIEW调试的第一个也是最简单的工具,但它们却是非常强大的工具。您可极其轻松地将探针置于线路上,在查找问题过程中不断获取信息。以下是探针的几个功能: 保存连线值功能 LabVIEW开发环境中的保存连线值功能经常会被忽略。当您启用某个VI的连线值保存功能时,LabVIEW将自动存储该VI框图上每根连线的最后一个值。然后,将光标悬停在任一连线上,即使该VI未运行,探针工具也将出现提示信,显示该连
3、线最后一个值。 图2.保存连线值按钮就在“灯泡”图标旁边。 自定义探针,无需编写任何代码 运用LabVIEW自定义探针,您无需编写任何代码就可创建强大、复杂的调试工具。例如,您可在“自定义探针”>>“控件”>>“波形图”中创建显示任意数字连线的先前值的“历史探针”。这可帮助您发现您正在探究的数据的模式或趋势,而无需编写特殊的探针代码。 图3.使用波形图探针显示简单数字连线的历史值。 从LabVIEW工具网络获取自定义探针 借用他人创建的探针来扩展您的工具箱。SAPHIR在LabVIEW工具网络上提供了一系列免费的自定义LabVIEW探针。您只
4、需下载安装VI软件包管理器(VIPM)社区版(也是免费的)、搜索ViBox,再通过几次单击就可安装探针。 如果您正在使用LabVIEW2011,您还可通过单击LabVIEW入门指南窗口的“查找LabVIEW附加工具...”从LabVIEW工具网络上获取ViBox。 图4.使用VIPM安装SAPHIR自定义探针。 调用时挂起 许多LabVIEW程序架构师甚至不知道LabVIEW具备该项功能。“调用时挂起”功能可将执行挂起,使您可以进行以下任一或所有操作: 在VI运行之前随意更改VI的控件值。 VI返回调用程序时随意更改显示件的值。 重复运行VI,而无
5、需将执行返回至调用程序。 完全跳过VI执行,返回至调用VI。 图5.在子VI节点设置窗口中,选择“调用时挂起”功能。 对于调用时挂起功能,NI做了简要说明,见此处。然而,熟悉该功能的最佳方法还是亲自动手实践。 未连线的前面板控件和显示件 为FIRST(崇尚发扬科学技术)机器人竞赛团队推荐了一项技术,这项技术对于专业的LabVIEW开发人员也非常有用 Ben建议在VI中添加前面板控件或显示控件,但并不与连线板连接。这些控件和显示件与“调试”输入或输出工作方式类似,您可在测试时对其进行手动控制。这可使您更容易在应用中生成偶然或极端事件,而无需繁多的支持或
6、仿真代码的写入。 您还可以在已建应用程序中使用这些调试控件和显示件,前提是LabVIEW应用程序生成器包含了VI前面板。 参阅LVMastery.com上的介绍,进一步了解Ben建议的调试子VI。 执行跟踪 如果其他方法都失败的情况下,有时您所能做的只有逐步跟踪代码。遇到此类问题时,您可通过几种方法在LabVIEW内进行执行跟踪。 最明显的方法是使用LabVIEW中内置的“高亮显示执行”功能,也称为“灯泡”。如果说探针是LabVIEW调试的首要工具,灯泡则位列第二。但是,如果碰到复杂或是时间相关的漏洞,您则可选择其他更有效的工具。 图6.执行跟踪功能
7、比灯泡功能更多。 跟踪磁盘或内存 启动执行跟踪的一个简单方法是在其中一个子VI中记录一个连线值。您可编写一个简单的VI,将该值记录到文件中,或甚至可创建一个自定义探针来显示连线的历史值。通常通过这样一个简单的跟踪您就可收集足够的信息来帮助您找到漏洞的原因。 NILabVIEW桌面执行跟踪工具包 如果要调试一个大型的高度并行应用程序,则包含NI开发者套件2011的LabVIEW桌面执行跟踪工具包就是您进行LabVIEW代码分析的“利器”。它可提供关于正在运行的应用程序的各种信息,包括详细的内存分配和再分配、事件生成、由代码定
此文档下载收益归作者所有