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 GDI对象的使用在image.cpp或drawmgr.cpp中引起了DAbort



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

问题: 我的LabVIEW崩溃了,错误发生于image.cpp或drawmgr.cpp,我在Windows任务管理器中发现LabVIEW使用的GDI对象接近10000.什么是GDI对象,它们是怎么影响LabVIEW的。

解答:

GDI(图形设备接口)对象是固定的Windows资源,负责表现图形对象。每个GDI对象对于一个进程私有,这意味着只有创建GDI对象的那个进程可以使用对象的句柄。更多的信息请参考微软关于GDI对象的MSDN文档


每个进程,包括LabVIEW.exe被微软限制只能使用10000个GDI对象。如果需要更多地GDI对象将引起LabVIEW的崩溃。这类崩溃被NI错误报告工具(NIER)报告为:DAbout in image.cpp or drawmgr.cpp。为了确认是由于GDI的使用引起的该崩溃,可以打开Windows任务管理器来查看LabVIEW消耗了多少的GDI对象(在任务管理器的进程选项卡中,点击菜单栏“查看-选择列…”,勾选GDI对象)。

如果LabVIEW到达了10000个对象的限制,检查一下项目来解决LabVIEW的崩溃。

1. VI中每个前面板空间使用了一定数量的GDI对象资源。如果前面板包含了太多的输入和显示控件,那就可能超出了10000个GDI对象的限制。LabVIEW尽量的使得每个控件占用的GDI对象更为有效,但是减少前面板控件的数量可以有助于降低LabVIEW整体使用的GDI对象数量。
2. 安装最新的显卡驱动。大多数显卡厂商将其最新的驱动发布于他们的网页上。这通常会修复导致GDI溢出的内存泄露。

如果使用了以上两个方法后,问题依然存在,请至www.ni.com/support联系NI技术支持来帮助解决本问题。



相关链接: MSDN: GDI Objects (Windows)
Microsoft TechNet: Overview of Performance Monitoring

附件:





报告日期: 11/13/2012
最近更新: 02/24/2014
文档编号: 63CF77QB