![]() |
|
||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
제목 없음.jpg
39.6KB
제 생각엔 김길동님이 Access violation에 대해서 잘 모르셔서 그런 것 같습니다. "Access violation at address 1111"이라는 메세지는 "1111번지의 메모리에 접근하는 건 위배다."라는 뜻입니다. 이 오류는 Application이 스스로 확인해서 알아낸 오류가 아니고 운영체제가 메모리를 관리하면서 Application한테 알려준 것도 아니고 CPU가 알려준 에러입니다. 실행 중에는 1111번지 위치에 뭐가 있었는지 알 수 있는 방법이 없습니다. 그래서 그냥 메모리 주소만 알려주는거구요. 그래서 디버깅을 해봐야 합니다. 소스코드를 보면 그 주소에 뭐가 있었는지 알 수 있거든요. 디버깅을 하면 디버거가 1111번지 주소에 있던 것을 역추적해서 소스코드에서 알려줄겁니다. 가장 흔한 예로는 var i: Integer; 와 같이 컴파일러가 알아서 메모리 관리를 해주는 부분에서 발생하는 것이 아니라 클래스와 같이 개발자가 직접 생성하고 소멸하는 것들을 관리를 잘못해서 발생하구요. GetMem, FreeMem, New, Dispose와 같이 직접 메모리를 관리하는 기능을 잘못 사용해도 마찬가집니다. 혹은 본인이 직접 하지 않았어도 인터넷에서 받은 콤포넌트나 라이브러리가 그런 에러를 가지고 있을 수도 있습니다. 여튼... Access violation 에러를 질문하는 건, 비유로 설명하면 운전중에 차가 고장났는데 카센타에 전화해서 "내 차가 고장났는데요 왜 고장난거죠?"라고 질문하는 것과 똑같습니다. 뭐하다가 어떻게 하다가 어떤 증상을 보였는지 아무것도 모르면 아무것도 알 수 없구요. 첨부하신 화면은 고장난 차를 사진찍어서 올린 거나 다름 없습니다. 그걸로는 아무 것도 알 수 없네요. 요즘에는 책을 사보기도 마땅치 않는데요. 델파이 (델파이 맞죠? C++빌더인가?) 메뉴얼에도 자세히 설명돼 있구요. 여기 볼랜드포럼이나 델마당 같은데서 찾아 보시려면 아주 옛날 자료에서 찾아보시면 관련 내용이 있을 겁니다. Access violation 해결하는 법이라던가, 디버깅하는 법 등에 대해서요. 화이팅입니다. (세상에 쉬운게 하나도 없죠. 개발자가 코딩을 잘못한 건 맞지만 사람이 이해할 수 있는 고급언어라는 신분에 걸맞지 않는 그런 원시적인 메세지 나부랭이나 띄워대는 걸 보면 개발툴 시장이 진정한 인간을 위한 기술이 되려면 아직도 아직도 한참 멀었다는 생각이 듭니다. 언제쯤 그런 쓰레기같은 원시적인 메세지를 안 보는 날이 올까요. 좀 황당한 상황이겠지만 그러려니 하시고 잘 배워보세요. 알고보면 개발툴이 알아서 해주는 건 극히 일부랍니다.) 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |
세상에 어떤 개발자도 해결할 수 없습니다.
해당 소스 일부라도 보여주셔야 해결되지요.