LabVIEW程序的调试方式_第1页
LabVIEW程序的调试方式_第2页
LabVIEW程序的调试方式_第3页
LabVIEW程序的调试方式_第4页
LabVIEW程序的调试方式_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、调试工具是任何一种程序开发环境都必须提供的功能,它们可以显著地提高程序员的开发效率。LabVIEW作为一种图形化程序设计语言的IDE工具(同时也是一门独特的语言),自然需要考虑为工程师提供适合于图形化语言调试的工具。事实上,LabVIEW并没有规定哪些工具被划分为调试工具,哪些工具被划分为其它的工具。这种界限和定义是比较模糊的,在实际使用中,我们可以把辅助程序员更准确、快捷地定位代码执行和 Bug的工具统称为“调试工具”。LabVIEW主要的调试工具位于工具栏,如图1所示。从左至右依次是:(1) Run:运行,单击它会直接运行当前的VI,快捷键Ctrl + R。(2) Run Continuo

2、usly :连续运行。(3) Abort Execution :中止运行,单击它会停止当前运行的VI。(4) Pause:暂停运行。(5) Highlight Execution :高亮执行工具,单击它程序会变慢,反映整个数据流运行的过程。Retain Wire Values :单击它会保留当前连接线上的值(这一点在后面描述)。(7) Start Single Stepping :单步执行,此时程序往前运行一个节点。(8) Step Over:跳过当前的节点。(9) Step Out :跳出单步执行。(10) Step Into :进入到某一个子 VI中执行。其中(1)(4)是常用的工具,用来

3、控制VI的运行、暂停和停止;而(7)(10)是其它的程序设计语言的IDE环境均具备的,用法也没有其它的区别。因此,本文将着重介绍LabVIEW 中特有的程序调试工具或者方法。切刮.回¥1固kJ暫*LmiztogE*|阳7心4函寸IT1 LabVIEW 的工具栏1.1 错误列表(Error List)LabVIEW作为一种图形化的编译型语言,其编译的过程是在后台自动完成的(无需程序员手动编译),编译后的目标代码也存储在vi文件中。因此LabVIEW会“实时地”判断代码是否能够正常运行。当无法正常运行时, 将弹出Error List对话框,列出当前VI继承中所有的错误,如图 2所示。对话

4、框分为3个部分,分别表示发生错误的Vis、发生错误的节点和错误简单表述、错误的详细描述。双击某一个 VI可以直接打开该 VI,双击某个错误节点可以直接定位到该节点节点。2 Error List 对话框通常使用该方式可以快速地定位发生错误的VI或节点,并根据错误描述进行修改。有时候会出现LabVIEW的"运行”箭头是断开,而Error List对话框中却没有显示任何错误的情况。这是由于 LabVIEW在内存中的已编译代码无法执行,只需要把当前的VI重新强制编译即可,方法是在单击“运行”箭头的同时按住Ctrl键(LabVIEW 8.6.1之前的版本可能是 Ctrl + Shift 键)。

5、1.2 VI 继承和调用(VI Hierarchy)LabVIEW允许并且鼓励子 VI的调用,因此VI之间存在着调用与被调用关系,LabVIEW将这种关系以图形的方式表示出来,称之为“ VI继承”(动态调用的VI将不会显示其调用与被调用的关系)。选择View»VI Hierarchy菜单项,弹出 VI之间的关系图,如图3所示。3 VI Hierarchy从该图中可以迅速地看出当前VI的子VI以及被调用的VI之间的关系,双击某个 VI的图标可以快速地打开该 VI前面板。【小技巧】双击某个VI图标的同时按住Ctrl键能够直接打开VI的后面板。当LabVIEW暂停在某个VI中时,会在背面板

6、工具栏中显示当前VI被调用的Vis列表,如图4所示。从图中可以看出,当前的 VI正被1.vi调用,单击该选项,可以看出整个被调用关系的列表 Vis。当从列表中选择某一个VI时,LabVIEW 会自动定位到该 VI。43 2.vi Block Diagramh ;| iMQgj4 VI Caller Chain1.3 断点工具(Breakpoint)程序运行到断点位LabVIEW运行对背面板中的任何一个节点和连线都可以设置断点,置时会暂停运行。在需要放置断点的位置上右击,选择弹出菜单中的Breakpoint菜单项,使用 SetBreakpoint指令可以在当前位置放置一个断点,如图5所示。r-a

7、Clean Up WireCreate Wire BrandiDelete Wire BranchInsertNuniefic PaletteCreateProbeCustom Probe|Breakpoait丄Set BreakpointDeecripton snd Tip.Breakpojnt Manager5 Breakpoi nt快捷菜单当在已经存在断点的位置上右击鼠标时,会弹出图6所示的快捷菜单。使用ClearBreakpoint菜单项可以清除当前的断点,而Disable Breakpoint可以禁止当前的断点,此时断点将不再暂停程序的执行。InsertNumeric PaJette

8、CreateProbeCustom ProbeBreakpoint匚lean Up WireCreate Wire BranchDelete Wire BranchDesorption and Tip,Ctear BreakpointDtsabte BreakpointBreakpaint P* 吕 n ag&r6 Breakpoi nt快捷菜单在大型的程序调试中,断点往往是使用的最为频繁的工具,它使得程序员能够迅速地专注于所关心的VI,而对于其它的 VI执行过程则正常运行。通常,程序员为了找到某个Bug后又需要将这些断点Bug出现的原因,会在背面板中设置若干个断点,而一旦清除掉地清除

9、,这难免会重复和繁琐。LabVIEW 8.6提供了一个断点管理的工具,可以选择图5或图6中的Breakpoint Manager菜单项,启动如所示的断点管理对话框(或者直接使用View>>Breakpoint Manager菜单项)。该对话框中列出了当前内存中所有VI中包含的断点,程序员可以选择任意地断点批量地将它们清除或者禁设置为禁止状态。图 7 Breakpoint Manager对话框1.4 高亮工具(Highlight)高亮工具是LabVIEW相对于传统的文本式语言的IDE环境所独有的调试工具,也是数据流程序设计思想的一种体现。打开工具栏中的Highlight工具(如图8所

10、示)并单击“Run”按钮,程序开始在 Highlight模式下运行。此时根据数据流的运行顺序,LabVIEW将在各个节点的输入和输出的端子上显示当前端子上的数据,并且以小圆点的方式显示数据流的执行方式。程序员可以比较清楚地观察到数据流的走向以及源代码的执行情况,这极大地方便了 LabVIEW开发者对某部分代码的详细调试。8 Highlight 工具对初学者而言,这种调试方式无疑是直观和清楚的。但是同时对一些 VI也会带来一些影响,如某些对时间有着严格控制的VI。由于在Highlight模式中,LabVIEW会减慢程序执行的速度,因此有些与时间有关的事件或者Bug会被掩盖和忽略。这也是为什么有时

11、候程序在Highlight模式下运行正常,而回到普通模式时却无法返回正确的结果。此时,就需 要使用Breakpoint和Probe工具(下一小节介绍)联合调试,找到程序出现问题的原因。1.5 探针工具(Probe)探针并不是LabVIEW 所特有的调试工具,在很多的文本式语言的IDE中都存在着Watch窗口用来实时监视某些变量的值,LabVIEW中的探针与此类似,也是用来实时监测程序背面板中任一连接线(不是任一节点)上的值。右击源代码中任一连线处,选择Probe菜单项将弹出当前位置的探针,如图9所示。LabVIEW会自动判断当前位置的数据类型从而调用不同的探针以显示当前位置的数据。当VI的背面

12、板关闭时,那么该 VI中所有的探针窗口也会自动关闭。运行VI,当运行到探针的位置时将在探针窗口中立即显示当前的值。String1 Lk. L ilIClean Up Wire Create Wire Branch Delete Wire BranchInsert»String Palette#Create¥j Probe|Custonn ProbeBreakpoint卜De&criptonindTip.9 Probe工具为了定位到错误源或者找到某一时刻的运行结果,往往程序员需要配合断点和探针工具,在适当的位置增加断点,而适当的位置加入探针。或者直接设置探针工具,让探

13、针捕获到某一特定的条件是程序暂停运行。如在图9中,选择 Custom Probe>>Conditional StringProbe菜单项将弹出图10所示的探针窗口。在Condition页中,可以设置程序暂停的条件。当满足该条件时,程序将立即在当前探针位置暂停。10 Co nditio nal String Probe从图9和图10可以看出,探针的主要功能就是将当前连线上的数据以控件(Indicator)的形式表示出来。 由于在LabVIEW中,数据的显示方式是可以自定义的,如使用Type Def.控件修改某些控件的外观或者将 String控件以*的密码方式显示,因此 LabVIEW

14、 提供了 自定义探针技术允许程序员根据实际情况使用任意预定义的探针。在图9的快捷菜单中选择 Custom Probe>>New菜单项,将弹出图11所示的自定义探 针向导。程序员可以选择从现有的探针文件(从后面可以看出,事实上也是一个vi文件)新建探针或者直接新建一个空的探针。选择"Create a new probe ”项。11 Create New Probe_1单击Next按钮进入图12所示的界面。File name表示探针文件的名字;Win dow title and shortcut menu name表示探针VI的标题栏名字同时也是使用探针时出现在快捷菜单中的名

15、字; Directory to save the probe 表示探针的存储位置。12 Create New Probe_2单击Save按钮,LabVIEW会自动生成图 13所示的探针 VI。不要删除界面上的任何控件:(1) String型控件表示探针位置当前的数值; Boolean型控件表示条件断点,当该值被设置为TRUE时,程序将在当前的断点处暂停。实际上,程序员可以任意修改这两个控件的外观,如设置为自定义类型、修改控件的Label或Caption,甚至可以在当前 VI中加入新的控件。但是最好不要修改控件的类型和Conn ection (输入输出连接端子)定义方式,因为LabVIEW会根据

16、控件的类型选择在不同的位置调用不同的探针 VI。13 Stri ng Probe_Custom.vi本例将修改String Probe_Custom.vi (下载)使得程序以不同的方式显示String的值,并且设置为当值为“ Hello ”时暂停程序运行。 如图14所示,加入适当的代码,并调整Probe 的前面板窗口大小(这也是最终探针的显示大小)。14 修改后的 String Probe_Custom.vi新建一个VI,并加入一个String控件,此时在右键快捷菜单中选择Custom Probe>> MyFirst String Probe菜单项,如图15所示。15 调用 Str

17、ing Probe_Custom探针此时,LabVIEW 会自动调用 String Probe_Custom.vi,并以探针窗口的样式显示,如图 16所示。在运行 VI前修改Display Style中的值并运行 VI,那么String显示框将自动以相应的方式显示数值。 20 Probe_ Display Style 扌'V CodeString Inputcv 呂 fd16 Stri ng Probe_Custom探 针窗口从上面的调用过程可以看出,LabVIEW中的探针实际上是对 VI的调用。因此,在编辑探针VI时需要遵循以下的原则:(1)不要在探针VI中加入任何等待或长时间执行的

18、代码,如循环、事件、队列等,否则LabVIEW 在运行时会自动挂起。(2) 不要修改探针VI的默认属性,如设置为 Modal等。但是可以修改它的标题栏和大小。 只有当程序运行到探针位置时,探针窗口才显示当前运行值,并且这些值在 连线中不会保存。也就是说如果需要探测某个位置的值必须要在运行之前在该位 置加入探针,否则如果是在程序运行之后再次加入探针,那么这些新加入的探针将无法显示程序之前的运行值。LabVIEW提供了一种工具允许程序中的连接线保留上一次的运行值。单击图17中的“Retain Wire Values”按钮打开该工具, 此时LabVIEW 将保留当前 VI上一次的运行值。 当VI运行完成后,再次添加探针,则探针会自动立即显示该位置上一次的运行值。当然,这 也会影响程序运行的效率,因此当 VI退出内存时,LabVIEW会自动关闭该工具。17 Retai n Wire Values 工具1.6 VI 窗口管理(VI Windows)在调试过程中,为了追踪子VI的运行状态,经常需要打开很多的 VI窗口。往往在关闭这些窗口时反复地按下“ Ctrl + W ”键,LabVIEW 提供了同时关闭这些 VI的方法。单击Windows»AII Windows (快捷点是 Ctrl + Shift + W )菜单项,将弹出图18所示的VI窗口管理对话框。选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论