首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» 适用于每个LabVIEW开发者的巧妙调试技巧
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
适用于每个LabVIEW开发者的巧妙调试技巧
发短消息
加为好友
我是MT
当前离线
UID
1023166
帖子
6651
精华
0
积分
3328
阅读权限
90
来自
燕山大学
在线时间
230 小时
注册时间
2013-12-19
最后登录
2016-1-5
论坛元老
UID
1023166
性别
男
来自
燕山大学
1
#
打印
字体大小:
t
T
我是MT
发表于 2014-10-10 09:15
|
只看该作者
适用于每个LabVIEW开发者的巧妙调试技巧
开发者
,
技巧
,
软件
作者:Omar Mussa,程序架构师和专业服务经理,
NI
联盟伙伴JKI
Justin Goeres,程序架构师和产品市场经理, NI联盟伙伴JKI
成为
LabVIEW
漏洞修复高手
如果您经常使用NI LabVIEW软件,当软件不能按照预期的情况运行时,您可能会有一个自己的调试技巧和技术工具箱。 这些技巧和技术有些是常用的,而剩下的可能是您自己摸索出来的。
图1.巧妙的调试方法能够清除漏洞。 (Brian Searle摄)
我们与JKI的LabVIEW程序架构师 ( Certified LabVIEW Architects, CLA ) 以及LabVIEW社区的朋友进行了交流,向他们学习一些快速识别、隔离和修复漏洞的“绝密”技巧。我们了解到以下几个巧妙的调试技巧。
利用探针
探针是LabVIEW调试的第一个也是最简单的工具,但它们却是非常强大的工具。您可极其轻松地将探针置于线路上,在查找问题过程中不断获取信息。 以下是探针的几个功能:
保存连线值功能
LabVIEW开发环境中的保存连线值功能经常会被忽略。 当您启用某个VI的连线值保存功能时,LabVIEW将自动存储该VI框图上每根连线的最后一个值。 然后,将光标悬停在任一连线上,即使该VI未运行,探针工具也将出现提示信,显示该连线最后一个值。
图2.保存连线值按钮就在“灯泡”图标旁边。
自定义探针,无需编写任何代码
运用LabVIEW自定义探针,您无需编写任何代码就可创建强大、复杂的调试工具。 例如,您可在“自定义探针”>>“控件”>> “波形图”中创建显示任意数字连线的先前值的“历史探针”。 这可帮助您发现您正在探究的数据的模式或趋势,而无需编写特殊的探针代码。
图3. 使用波形图探针显示简单数字连线的历史值。
从LabVIEW工具网络获取自定义探针
借用他人创建的探针来扩展您的工具箱。 SAPH
IR
在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做了简要说明,见此处。 然而,熟悉该功能的最佳方法还是亲自动手实践。
未连线的前面板控件和显示件
为FIR
ST
(崇尚发扬科学技术)
机器人
竞赛团队推荐了一项技术,这项技术对于专业的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开发者套件之内。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议