모바일 왕국을 꿈꾸며!!! mobizen@mobizen.pe.kr

Posted
Filed under 개발관련
모바일쪽에서 개발을 하다보면 가끔씩 Main Entry를 못찾아서 개발한 Application이 실행이 안되는 경우가 종종있다. 플랫폼에 따라 약간씩 차이가 있지만 모바일에서 Application을 Loader하는 순서는 Windows에서 LoadLibrary를 이용하여 dll내의 함수가 호출되는 것과 유사한 동작을 한다.

문제는 각각의 Application에서 할당된(플랫폼에 따라 다르긴 하지만) 메모리를 앞의 Application이 Over를 하는 경우에는 Main Entry 영역이 없어져 버리기 때문에 Application Loader가 가끔 void main() 의 함수 Pointer를 못 찾는 경우가 종종 생긴다.

또는 Applicaiton 영역의 크기가 얼마인지 정확히 알지 못할 때는 main 함수만 보유한 Blank Applicaiton을 만들어서 확인을 해야 한다. 그 후에 Main 함수의 크기를 점점 늘여나가면서 확인을 해야 하는 경우가 있다. 리소스가 가능한 Platform인 경우 리소스의 크기로 조절을 해도 되지만 모바일에서 리소스를 지원하지 않는 플랫폼이 상당수인데다가 리소스는 실행 모듈의 뒷부분에 있기 때문에 되도록이면 main 이 불려 질 수 있는 앞쪽이 좋다.

이번에 비슷한 일을 겪으면서 간단하게 유틸을 하나 만들었다.
배열값을 간단하게 만들어 버리면 컴파일러가 압축을 해버리기 때문에 원하는 실행 모듈의 크기를 얻을 수 없으므로 random 하게 값을 만들어 주어야 한다. 워낙 간단한 유틸이라 뭐 만들고 잣이고 할게 없었다. Size는 컴파일러마다 압축을 조금씩 하므로 원하는 값과 정확히 일치는 하지 않지만 결과는 대충 비슷하게 들어 맞는다. 에러 처리가 빠진게 있을지는 모르겠다~

근데... 이런게 필요한 사람이 있기는 있으려나??

2007/06/25 20:42 2007/06/25 20:42