Qizhen's profileLabVIEWPhotosBlogListsMore ![]() | Help |
其它常用调试工具和方法除了断点和探针这两种最常用的调试工具外,我们也经常要借助一些其它的工具和方法来找到程序的问题所在。 1. 性能和内存查看工具(Profile Performance and Memory)调试的目的并不一定仅要找出功能性错误,有时是要找到程序效率低下的原因,或者潜在危险,如内存泄漏等。这时就要用到 LabVIEW 的性能和内存查看工具了。参见:LabVIEW 的运行效率 1 - 找到程序运行速度的瓶颈。 2. 显示缓存分配工具(Show Buffer Allocation)显示缓存分配工具是另一检查 LabVIEW 代码内存分配情况的强大工具。参见:LabVIEW 程序的内存优化。 3. 程序框图禁用结构(Diagram Disable Structure) 调试首先要找到问题发生的部位。有时候,我们可以使用探针一路跟踪数据在程序执行过程中的变化。如果数据在某个节点的输出与预期的不一致,这个节点很可能就是问题所在。还有些情况,不是靠这种简单方法就可以找出问题的。比如程序中出现的数组越界的错误,在错误发生后,程序可能还会正常运行一段不确定的时间,然后崩溃,或报错。这种程序报错,或者崩溃的地方有可能在每次调试时都不同,或者找到了最终出错的代码,发现他是个最基本的 LabVIEW 节点,不能再根据去调试了,而这个节点出错的可能性基本为零,错误肯定是其他地方引起的。 使用程序框图禁用结构需要注意的一点是,这个结构可以有多个 Disable 的页面,同时会有一个 Enable 的页面。调试人员可能还要在 Enable 的页面作一些改动,比如为输出数据添加一些虚拟值,以使后续程序可以程序可以正确运行下去。例如图2,为了让后续的程序继续正确运行,需要把 reverence 和 error 数据线连接上。 4. 条件禁用结构(Conditional Disable Diagram) LabVIEW 中还有一个类似于 C 语言中 #if,#ifdef 的结构,就是条件禁用结构。使用条件禁用结构可以让某些代码在特定的条件下不运行。与条件结构(Case Structrue)相区别,条件结构在运行时决定执行哪一个页面中的代码;而条件禁用结构是在编译时就已决定好执行哪一个页面的代码了,不被执行的页面的代码在运行时都不会被装入内存。 点击条件禁用结构右键弹出菜单中的 Edit Condition For This Subdiagram... 条目可以弹出条件配置窗口,在这个窗口改变使本页运行的条件。LabVIEW 有一些预定义的符号(Symbol)可供条件禁用结构使用,比如 TARGET_TYPE 表示目标代码在什么系统下运行。如果条件是“TARGET_TYPE == Mac”表示目标代码运行在苹果机上。 5. 使用消息对话框和文件 有一些错误是在关闭了调试信息后才出现的,或者出错的代码部分不允许使用 LabVIEW 的调试环境。这时就要使用类似 C 语言中 printf() 的功能了。具体实现方法就是把可以的数据在程序中用 messagebox 显示出来,这样就可以跟踪察看程序是在哪一部分出错的。还可以把所有相关的数据都保存在一个状态记录文件中,察看这个记录文件,就可以找出可以的错误。 相关文章: TrackbacksThe trackback URL for this entry is: http://ruanqizhen.spaces.live.com/blog/cns!5852D4F797C53FB6!1816.trak Weblogs that reference this entry
|
|
|