image.cpp 또는 drawmgr.cpp에서 LabVIEW DAbort 충돌

업데이트 됨 Mar 28, 2024

해당 제품

소프트웨어

  • LabVIEW

문의사항

  • LabVIEW 프로그램이 image.cpp 또는 drawmgr.cpp 오류와 함께 충돌했습니다.
  • cRIO-9034를 통해 독립형 LabVIEW 어플리케이션을 실행 중이며 drawmgr.cpp에서 오류와 함께 충돌이 발생했습니다.
  • Windows 작업 관리자에서 LabVIEW에서 사용하는 GDI 객체의 수가 10,000개에 접근하는 것을 확인했습니다.
  • 오류가 발생했을 때 일관성이 없습니다.
  • 이것은 편집 시간, 런타임 및 시작 중에 발생합니다.

해결책

  1. 전면 패널 개체의 양을 줄여보십시오.
    • 이것은 LabVIEW가 사용하는 GDI 객체의 총량을 줄이는 데 도움이 됩니다.
    • VI를 실행할 때 GDI 객체가 시간이 지남에 따라 증가하는 경우, 프런트 패널에서 객체를 반복적으로 렌더링 할 수 있는 VI 내의 재귀 요소를 확인하십시오.
      • Windows 작업 관리자에서 GDI 개체 사용을 추적할 수 있습니다 (아래 추가 정보 참조).
  2. GDI 개체 핸들의 제한을 변경합니다.
  3. 제조업체의 최신 비디오 드라이버를 설치하십시오.
    • 이렇게 하면 일반적으로 GDI 오버플로우(Overflow)로 이어지는 메모리 누수가 수정됩니다.
  4. 팔레트 로딩 설정 변경;
    • LabVIEW 창에서 상단 도구 모음으로 이동하여 도구»옵션...으로 이동합니다.
    • 옵션 창이 열립니다. 컨트롤/기능 팔레트로 이동합니다.
    • 상단에는 로드 옵션이 있어야 하며, 충돌을 완화하려면 팔레트 로드를 선택합니다.
  1. <LabVIEW>\user.lib 디렉토리에서 불필요한 라이브러리를 제거하십시오.
    • LabVIEW는 각 팔레트 이미지에 대해 GDI 객체를 사용하므로 많은 수의 팔레트 VI가이 충돌의 원인이 됩니다.
  2. Windows 레지스트리를 변경하여 Windows GDI 제한을 늘립니다.
  3. cRIO(또는 사용된 다른 하드웨어)를 재부팅하면 일시적인 해결책이 될 수 있지만 문제가 다시 발생하지 않도록 위의 1-6단계에 자세히 설명된 단계를 따르십시오.
  4. NI 기술지원부에 전화하십시오.
    • 위의 두 가지 옵션을 조사한 후에도 문제가 계속되면 NI 기술지원부에 문의하여 문제 해결에 도움을 받으십시오.

추가 정보

GDI (Graphics Device Interface) 개체는 그래픽 개체를 나타내는 고정 Windows 리소스입니다. 각 GDI 개체는 프로세스 전용이므로 GDI 개체를 만든 프로세스 만 개체 핸들을 사용할 수 있습니다.

LabVIEW.exe를 포함한 각 프로세스는 Windows에서 10,000 개의 GDI 객체로 제한되며, 더 많은 GDI 객체를 요청하면 LabVIEW가 충돌합니다. 이 충돌은 NI 오류보고 도구 (NIER)에서 image.cpp 또는 drawmgr.cpp에서 DAbort로 포착됩니다. 과도한 GDI 사용이 충돌의 원인인지 확인하려면 Windows 작업 관리자를 사용하여 얼마나 많은 GDI 객체가 소비되고 있는지 확인하십시오. LabVIEW. Windows 10의 경우 GDI 값은 기본적으로 표시되지 않습니다. 작업 관리자의 세부 정보 테이블로 이동해야 합니다 -> "이름"열과 "열 선택"을 마우스 오른쪽 버튼으로 클릭합니다.