From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



LabVIEW的内部错误(Failure in XXX.c / XXX.cpp at line YYY)



主要软件: LabVIEW Development Systems>>LabVIEW Full Development System
主要软件版本: 7.1
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems

问题:
我碰到了一个LabVIEW的错误信息"Failure in XXX.c / XXX.cpp at line YYY"。发生了什么,如何修复它?

解答:
您可以通过访问LabVIEW内部错误支持网页来找到专门的信息。 LabVIEW的内部错误是什么? 一个LabVIEW的内部错误告诉我们某个条件的存在阻止了LabVIEW继续执行。通常,LabVIEW执行到它的内部代码某些点时,会判断某些条件是否是正确的。在通常情况下,这些条件都能被满足,LabVIEW就能处理它们。如果它们不正确,LabVIEW就会报告一个内部错误。LabVIEW报告这个内部错误,然后关闭。否则的话,可能会破坏内存中的VI。有许多原因会引起内部错误。由于这个原因,了解导致错误的操作是很有帮助的,我们可以在今后发布的LabVIEW版本中,修改LabVIEW,来解决这些问题。对于LabVIEW 7.0及以上版本,当LabVIEW重启时,您会遇到一个调查内部错误的窗口。通过它,您可以发送这个错误连同它的错误日志给美国国家仪器。这就简化了报告错误的过程,因此任何被发现的问题都可以被研究,在今后的发布版本中被解决。您可以通过设置Tools>>Options>>Debugging>>Prompt to investigate internal errors on startup来允许和禁止这个窗口的出现。 对于解决LabVIEW内部错误的一般建议
  1. 在KnowledgeBase或Developer Exchange discussion论坛中搜索您的错误信息(可参看相关链接)。
  2. 安装最新的LabVIEW更新。大多数的LabVIEW更新,您都可以从我们的驱动和更新库中找到(可参看相关链接)。
  3. 联系您的显卡硬件或打印机的生产厂家,索取最新的驱动。LabVIEW是一个图像高密集的软件,即使其它的应用程序工作正常,LabVIEW在显卡驱动上也可能遇到其它程序不会遇到的问题。
  4. 删除所有的临时文件。对于Windows 95/98,临时文件目录为C:\Windows\Temp,Windows NT/2000的话,是C:\WINNT\Temp。
  5. 宏编译(Mass compile)您的VI(File » Mass CompileTools » Advanced » Mass Compile,取决于您的LabVIEW版本)。如果您从一个较早的LabVIEW版本更新到一个新的版本,您可能会有一些较老的VI没有更新。宏编译会更新这些VI到目前的LabVIEW版本。
  6. 试着在另外一个操作系统上运行您的程序。知道这个问题是否与平台有关对于解决问题很重要的。(比如这个问题只在Windows 95、98、NT、2000上发生,等等)。
对于解决LabVIEW内部错误的专门建议
  1. 包括image.cpp,image.c,window.cpp,drawmgr.c,color.c,panel.c,panelsup.c,textmgr.c或者fontmgr.c 的错误在编辑时常会发生,当然也可能在打印时发生。

    建议:
    1. 这些LabVIEW的内部错误通常可以通过更新显卡驱动和打印机驱动到最新的版本来解决。联系您的硬件生产厂商并安装最新的驱动。一个确认内部错误是否与驱动有关的简单方法是把您的代码移植到另一台机器上(希望是不同的一组驱动程序),看看是否这个错误还存在。如果这个问题是与打印机有关的话,试试另一台打印机。
    2. 某些显卡驱动也支持“加速”模式。我们已经发现使用非加速模式往往可以消除错误。对于Windows 95/98,右击我的电脑图标,选择“属性”。在性能选项中,点击图像按钮,更改硬件加速(例如如果设置的是“全速”, 那就降低一个或两个层次)。对于Windows 2000/NT,在您的桌面上右击,选择“属性”。在设置页面中点击高级按钮,进入排错标签页。
    3. 在Windows中,由操作系统提供的标准VGA驱动是非常稳定的。您可以试着使用这个驱动,来代替专门为您显卡所写的驱动,如果错误消失了,那说明很可能这个问题是和您的显卡供应商提供的驱动有关。
    4. 尝试调整一下您驱动程序使用的颜色面板(比如说256色,高色,真彩色)。错误可能只会发生在这些模式中的一种。而且,改变代表屏幕区域的分辨率(象素数)。比如,从1024 x 768的显示模式到800 x 600象素显示。
    5. 如果在打印的时候发生错误,试着在LabVIEW中调整打印选项Edit » Preferences » Printing
  2. 包含memory.cpp,allocate.cpp的错误是由于对外部代码的不正确调用(例如,调用一个不正确分配内存的DLL或CIN)。

    建议:
    1. 可参考LabVIEW手册中使用外部代码第四章(见下面的链接),寻求解释和内存管理的正确用法(一套对于外部代码内存分配,管理和释放的独立程序平台)。
    2. 参考在我们网站上的这些可用资源:
      1. LabVIEW资源库 - 代码接口节点
      2. LabVIEW资源库 - DLL 集成
      3. LabVIEW中访问DLL或共享库的概述
  3. 包含thread.cpp的错误通常在一个多线程环境中调用DLL时发生。

    建议:
    1. 禁止在LabVIEW中使用多线程。Edit » Preferences » Performance and Disk (或者 Tools » Options » Performance and Disk,取决于您的LabVIEW的版本)不选中 "Run with Multiple Threads"。
    2. 保证您的DLL是可重入的(Reentrant)。在Call Library Function上鼠标右击,从弹出的菜单中选择“配置”。有一个带有两个选择的下拉菜单:"Run in UI Thread" 和 "Reentrant",选择"Reentrant"。
采纳这些建议后,如果您还是遇到一个LabVIEW的内部错误,那么联系美国国家仪器公司的技术支持(见以下链接),附上一个例子VI,用来说明问题,这样我们的应用工程师也能更容易的诊断这个问题。请尽量包括更多的细节以便我们去再现这个问题。

相关链接:
LabVIEW Support: Commonly Occurring Internal Errors and Resolutions
Drivers and Updates: Download the Latest LabVIEW Update
Product Manuals: Using External Code in LabVIEW
Developer Zone Tutorial: An Overview of Accessing DLLs or Shared Libraries from LabVIEW
Request Support


附件:





报告日期: 05/08/2006
最近更新: 12/19/2007
文档编号: DIRECT-46K5AP