자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi vcl160.bpl access violation
2017.03.20 15:35
델파이 xe2 버전으로 빌드된 프로그램이 있는데 사용하다보면 불특정하게 에러가 발생합니다.
Access violation at address 5044955B in module 'vcl160.bpl' Read of address 00000010.
map 파일을 만들어서 해당 주소값을 통해서 오류 위치를 찾을 수 있다고 하던데..
vcl160.bpl은 제가 개발한 bpl이 아니고 델파이에서 지원하는 GUI관련 라이브러리로 알고있습니다.
저건 소스도 없어서 map 파일을 만들수가 없을 뿐더러..
이런 오류가 반복되다보니 사용자의 불만이 커저가고있습니다.
해결방법이 없을까요?
참고로 해당 PC의 OS는 Windows7 그리고 현재 사용하는 델파이 XE2 버전은 Update 4 HotFix 1 입니다.
Delphi vcl160.bpl access violation
2017.03.20 15:35
델파이 xe2 버전으로 빌드된 프로그램이 있는데 사용하다보면 불특정하게 에러가 발생합니다.
Access violation at address 5044955B in module 'vcl160.bpl' Read of address 00000010.
map 파일을 만들어서 해당 주소값을 통해서 오류 위치를 찾을 수 있다고 하던데..
vcl160.bpl은 제가 개발한 bpl이 아니고 델파이에서 지원하는 GUI관련 라이브러리로 알고있습니다.
저건 소스도 없어서 map 파일을 만들수가 없을 뿐더러..
이런 오류가 반복되다보니 사용자의 불만이 커저가고있습니다.
해결방법이 없을까요?
참고로 해당 PC의 OS는 Windows7 그리고 현재 사용하는 델파이 XE2 버전은 Update 4 HotFix 1 입니다.
아시는 내용이지만 Access violoation은 잘못 인스턴스를 참조하는 경우 발생합니다.
vcl160.bpl에서 엑세스바이올레이션이 발생했다면,
제 경험으로 비추어보면
VCL에서 제공하는 클래스(TButton, TForm 등) 인스턴스(TXXX.Create)를 생성하지 않고 인스턴스 메소드를 호출하는 경우 많이 발생합니다.
이 경우 남겨주신 메모리 번지로 찾으면 찾기 어렵고, Exception stack을 참조해야 합니다.
Exception stack이란 최종적으로 발생한 예외 이전 몇단계의 메모리 번지를 기록하는 방법입니다.
델파이에서는 Exception.StackTrace라는 속성을 통해 예외스택을 기록할 수 있으며,
jclDebug, EurekaLog 등의 외부 라이브러리를 이용해야 합니다.
자세한 내용은 아래 링크를 참조하셔서 조치하시기 바랍니다.
http://docwiki.embarcadero.com/Libraries/Berlin/en/System.SysUtils.Exception.StackTrace
그 중 아래 글이 큰 도움이 될 것 같네요.^^
https://blog.gurock.com/working-with-delphis-new-exception-stacktrace/
혹시 진행하시며 어려운 점이 있으면 댓글 남겨주시기 바랍니다.