LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 点击:807 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:626帖 | 36回
  • 年度积分:900
  • 历史总积分:1491
  • 注册:2008年8月14日
发表于:2023-12-01 18:56:48
楼主

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项目合作开发,请与我们联系。




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师