LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃
出现下列问题,如何解决?
1. LabVIEW 程序因image.cpp或drawmgr.cpp中的错误而崩溃
2. 正在通过cRIO-9034运行独立的LabVIEW应用程序,但它因drawmgr.cpp中的错误而崩溃
3. 在 Windows 任务管理器中注意到LabVIEW使用的GDI对象数量接近10,000
4. 错误发生的时间不一致
5. 这些可能发生在VI编辑模式下、运行时和LabVIEW启动期间
方案
尝试减少前面板对象的数量。
这将有助于减少LabVIEW使用的GDI对象的总量。
如果在运行VI时GDI对象随着时间的推移而增加,请检查VI中的递归元素,这些元素可能会在前面板上重复渲染对象。为此,可以在Windows任务管理器中跟踪GDI对象的使用情况(请参阅下面的附加信息)。
更改 GDI 对象句柄的限制。MSDN:GDI Objects (Windows) 中描述了一种在 Windows(2000 年后)中增加GDI对象数量的方法。
安装显卡厂商提供的最新显卡驱动程序。这通常会修复导致 GDI 溢出的内存泄漏。
更改选板加载设置。
1. 在任何LabVIEW窗口中,在顶部菜单栏导航至工具»选项...
2. 这将会打开选项窗口。导航到控件/函数选板。
3. 在顶部有加载选项,选择在需要时加载选板以尝试减轻崩溃。
在<LabVIEW>\user.lib目录中删除不必要的库。LabVIEW会为每个选板图像使用一个 GDI 对象,因此具有大量选板 的VI 将导致此崩溃。
如果在 VI 中不断打开和关闭数据库,请通过收集更多要发送的数据来避免频繁打开/关闭数据库。
重新启动cRIO(或其他使用的硬件)可能会是一个临时的解决方案,但请按照上述详细步骤操作以防止问题再次出现。
如果在调查上述选项后问题仍然存在,请致电 NI 支持寻求进一步地解决问题。
相关信息
GDI(图形设备接口)对象是负责表示图形对象的固定Windows资源。每个GDI对象都是、进程私有的,这意味着只有创建GDI对象的进程才能使用其对象句柄。
包括LabVIEW.exe在内的每个进程都被Windows限制为10,000个GDI对象,并且请求更多GDI对象会导致 LabVIEW 崩溃。此崩溃被NI错误报告工具 (NIER)捕获为image.cpp或drawmgr.cpp中的DAbort。要确认导致崩溃的原因是否是过度使用GDI,请使用Windows任务管理器查看LabVIEW使用了GDI的数量。对于Windows10,默认情况下不显GDI数量。需要转到任务管理器中的详细信息--> 右键单击“名称”列»“选择列”。
这是LabVIEW的一个功能介绍,更多的使用方法与开发案例,欢迎登录官网,了解更多信息。有需要LabVIEW项目合作开发,请与我们联系。