LabVIEW程序的调试方式
时间:01-09
来源:互联网
点击:
调试工具是任何一种程序开发环境都必须提供的功能,它们可以显著地提高程序员的开发效率。LabVIEW作为一种图形化程序设计语言的IDE工具(同时也是一门独特的语言),自然需要考虑为工程师提供适合于图形化语言调试的工具。
事实上,LabVIEW并没有规定哪些工具被划分为调试工具,哪些工具被划分为其它的工具。这种界限和定义是比较模糊的,在实际使用中,我们可以把辅助程序员更准确、快捷地定位代码执行和Bug的工具统称为“调试工具”。
LabVIEW主要的调试工具位于工具栏,如图 1所示。从左至右依次是:
图 1 LabVIEW的工具栏
对话框分为3个部分,分别表示发生错误的VIs、发生错误的节点和错误简单表述、错误的详细描述。双击某一个VI可以直接打开该VI,双击某个错误节点可以直接定位到该节点节点。
图 2 Error List对话框
通常使用该方式可以快速地定位发生错误的VI或节点,并根据错误描述进行修改。有时候会出现LabVIEW的“运行”箭头是断开,而Error List对话框中却没有显示任何错误的情况。这是由于LabVIEW在内存中的已编译代码无法执行,只需要把当前的VI重新强制编译即可,方法是在单击“运行”箭头的同时按住Ctrl键(LabVIEW 8.6.1之前的版本可能是Ctrl + Shift键)。
图 3 VI Hierarchy
从该图中可以迅速地看出当前VI的子VI以及被调用的VI之间的关系,双击某个VI的图标可以快速地打开该VI前面板。
双击某个VI图标的同时按住Ctrl键能够直接打开VI的后面板。
当LabVIEW暂停在某个VI中时,会在背面板工具栏中显示当前VI被调用的VIs列表,如图 4所示。从图中可以看出,当前的VI正被1.vi调用,单击该选项,可以看出整个被调用关系的列表VIs。当从列表中选择某一个VI时,LabVIEW会自动定位到该VI。
图 4 VI Caller Chain
在需要放置断点的位置上右击,选择弹出菜单中的Breakpoint菜单项,使用Set Breakpoint指令可以在当前位置放置一个断点,如图 5所示。
图 5 Breakpoint快捷菜单
当在已经存在断点的位置上右击鼠标时,会弹出图 6所示的快捷菜单。使用Clear Breakpoint菜单项可以清除当前的断点,而Disable Breakpoint可以禁止当前的断点,此时断点将不再暂停程序的执行。
图 6 Breakpoint快捷菜单
在大型的程序调试中,断点往往是使用的最为频繁的工具,它使得程序员能够迅速地专注于所关心的VI,而对于其它的VI执行过程则正常运行。通常,程序员为了找到某个Bug出现的原因,会在背面板中设置若干个断点,而一旦清除掉Bug后又需要将这些断点一一地清除,这难免会重复和繁琐。LabVIEW 8.6提供了一个断点管理的工具,可以选择图 5或图 6中的Breakpoint Manager菜单项,启动如所示的断点管理对话框(或者直接使用View>>Breakpoint Manager菜单项)。该对话框中列出了当前内存中所有VI中包含的断点,程序员可以选择任意地断点批量地将它们清除或者禁设置为禁止状态。
图 7 Breakpoint Manager对话框
事实上,LabVIEW并没有规定哪些工具被划分为调试工具,哪些工具被划分为其它的工具。这种界限和定义是比较模糊的,在实际使用中,我们可以把辅助程序员更准确、快捷地定位代码执行和Bug的工具统称为“调试工具”。
LabVIEW主要的调试工具位于工具栏,如图 1所示。从左至右依次是:
- Run:运行,单击它会直接运行当前的VI,快捷键Ctrl + R。
- Run Continuously:连续运行。
- Abort Execution:中止运行,单击它会停止当前运行的VI。
- Pause:暂停运行。
- Highlight Execution:高亮执行工具,单击它程序会变慢,反映整个数据流运行的过程。
- Retain Wire Values:单击它会保留当前连接线上的值(这一点在后面描述)。
- Start Single Stepping:单步执行,此时程序往前运行一个节点。
- Step Over:跳过当前的节点。
- Step Out:跳出单步执行。
- Step Into:进入到某一个子VI中执行。
图 1 LabVIEW的工具栏
1.1错误列表(Error List)
LabVIEW作为一种图形化的编译型语言,其编译的过程是在后台自动完成的(无需程序员手动编译),编译后的目标代码也存储在vi文件中。因此LabVIEW会“实时地”判断代码是否能够正常运行。当无法正常运行时,将弹出Error List对话框,列出当前VI继承中所有的错误,如图 2所示。对话框分为3个部分,分别表示发生错误的VIs、发生错误的节点和错误简单表述、错误的详细描述。双击某一个VI可以直接打开该VI,双击某个错误节点可以直接定位到该节点节点。
图 2 Error List对话框
通常使用该方式可以快速地定位发生错误的VI或节点,并根据错误描述进行修改。有时候会出现LabVIEW的“运行”箭头是断开,而Error List对话框中却没有显示任何错误的情况。这是由于LabVIEW在内存中的已编译代码无法执行,只需要把当前的VI重新强制编译即可,方法是在单击“运行”箭头的同时按住Ctrl键(LabVIEW 8.6.1之前的版本可能是Ctrl + Shift键)。
1.2VI继承和调用(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中时,会在背面板工具栏中显示当前VI被调用的VIs列表,如图 4所示。从图中可以看出,当前的VI正被1.vi调用,单击该选项,可以看出整个被调用关系的列表VIs。当从列表中选择某一个VI时,LabVIEW会自动定位到该VI。
图 4 VI Caller Chain
1.3断点工具(Breakpoint)
LabVIEW运行对背面板中的任何一个节点和连线都可以设置断点,程序运行到断点位置时会暂停运行。在需要放置断点的位置上右击,选择弹出菜单中的Breakpoint菜单项,使用Set Breakpoint指令可以在当前位置放置一个断点,如图 5所示。
图 5 Breakpoint快捷菜单
当在已经存在断点的位置上右击鼠标时,会弹出图 6所示的快捷菜单。使用Clear Breakpoint菜单项可以清除当前的断点,而Disable Breakpoint可以禁止当前的断点,此时断点将不再暂停程序的执行。
图 6 Breakpoint快捷菜单
在大型的程序调试中,断点往往是使用的最为频繁的工具,它使得程序员能够迅速地专注于所关心的VI,而对于其它的VI执行过程则正常运行。通常,程序员为了找到某个Bug出现的原因,会在背面板中设置若干个断点,而一旦清除掉Bug后又需要将这些断点一一地清除,这难免会重复和繁琐。LabVIEW 8.6提供了一个断点管理的工具,可以选择图 5或图 6中的Breakpoint Manager菜单项,启动如所示的断点管理对话框(或者直接使用View>>Breakpoint Manager菜单项)。该对话框中列出了当前内存中所有VI中包含的断点,程序员可以选择任意地断点批量地将它们清除或者禁设置为禁止状态。
图 7 Breakpoint Manager对话框
LabVIEW程序调试方 相关文章:
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)