'Visual Studio 2005'에 해당되는 글 3건

  1. 2007.10.27 Data Abort 에러 발생시에 에러확인 및 중단하기 (2)
  2. 2007.09.30 WM 개발환경을 블랙잭과 유사하게 만드는 방법 (1)
  3. 2007.09.18 Visual Studio 2005과 Service Pack 1을 한번에 설치하기 (2)

Data Abort 에러 발생시에 에러확인 및 중단하기

프로그래밍/개발/Blackjack(SPH-M6200) 2007.10.27 00:12

블랙잭을 이용하여 프로그램을 작성하던 도중 특정 구문을 수행할시에 Data Abort 에러가 발생하는 것을 확인하였다.

평소 Win32 용 프로그램만 작성해 보다가 처음 하고 있는 Windows Mobile 디바이스 작업이기 때문에 처음 보는 에러였는데, 구글을 통해 검색해 보니 대충 윈도의 잘못된 연산 수행이나, 리눅스의 Segmentation fault 와 비슷한 것이라는 얘기가 나왔다.

그런데 이상한 점이, 분명히 윈도용 프로그램을 개발할 때에는 잘못된 연산을 수행하면 즉시 그 부분에 브레이크가 걸리고 무엇이 잘못되었는지 표시가 되는데 여기서는 그렇지가 않다는 것이었다.

사용자 삽입 이미지

멈추지 않고 에러가 계속 발생한다.

나같은 초보 프로그래머들은 저 에러메시지만 보고서는 대체 무슨 에러인지도 모르겠고, 소스에도 의심가는 부분이 없게 된다면 무척이나 당황하게 된다.

결국 Trace 를 통해 문제가 되는 부분을 찾았는데, 전혀 이상이 없다.
해답을 찾아 삼만리..

결국 발견한 것은 다음과 같은 방법이다.

Debug>Exceptions 메뉴를 실행한다.
다음과 같은 창이 뜬다.

사용자 삽입 이미지

Win32 Exceptions

주의해서 봐야 할 부분은 여기 Win32 Exceptions 부분이다.

여기 체크된 예외만이 디버거 실행을 멈추게 되어있다. 기본값은 위와 같고 (물론 항목은 더 많다.) 잘 보면 기본적인 Access violation 이나 Illegal Instruction, Datatype misalignment 가 체크되어 있지 않은 것을 알 수 있다.

위 항목을 체크하고 OK를 눌러주자

사용자 삽입 이미지

멈추길 바라는 항목들을 체크

다시 프로그램을 실행하면 결과가 아까와는 조금 달라진다.

사용자 삽입 이미지

뭐가 달라졌을까?

과연 어떤점이 다를까.

아까는 볼 수 없었던 줄이 하나 추가 된것을 볼 수 있다.
First-chance exception at 0x00028048 in xxxxxxxx.exe: 0x80000002: Datatype misalignment.


그리고 훌륭하게 디버거는 문제가 발생한 지점에서 실행을 중단하고 메시지 창을 띄운다.

사용자 삽입 이미지

Datatype misalignment

Data Abort 를 일으킨 장본인은 바로 Datatype misalignment 에러였다.

자! 문제가 무엇인지 좀 더 분명해 졌다.
왜 이런 Exception 들을 기본으로 체크해 놓지 않았는지 의문이 생기지만, 어쨌든 해결하게 된 것 만으로도 기쁘게 생각한다.
이제 문제가 무엇인지 알았으니 이제 문제를 해결하기만 하면 된다! (아직 해결 안됐음)

참고: datatype alignment 참고자료



Trackback 0 : Comments 2
  1. dawnsea 2007.12.17 17:14 신고 Modify/Delete Reply

    리퍼러 보고 왔어요 ㅋㅋ

    CE .NET 에서도 역시 무조건 4의 배수 얼라인을 하라는 듯?
    일단 아키텍쳐들이.. 임베디드에서 쓰는 코어들은 하드웨어 얼라인을 지원 안 하거든요..


    어.. 근데 수원멤이네요 -_-;
    저 수원멤 13기 -_-;; 애매모호한 낙오자 있습니다 ㅋㅋ -_-;

    • mahalo 2007.12.31 01:35 신고 Modify/Delete

      핫.. 방문해주셔서 감사합니다 ^^;
      수원멤 13기시면 한참 선배님이시네요~
      저는 16기랍니다.. 13기는 거의 모르는데.. OB와의 만남 오셨으면 한번쯤 뵈었을지도 모르겠습니다 ^^

Write a comment


WM 개발환경을 블랙잭과 유사하게 만드는 방법

프로그래밍/개발/Blackjack(SPH-M6200) 2007.09.30 02:20

블랙잭은 Windows Mobile 5.0 for Smartphone 운영체제를 이용하고 Landscape QVGA, QWERTY 사양을 가진 제품이다.

블랙잭용 프로그램 개발은 Windows Mobile 5.0 SDK for Smartphone (이하 SDK) 을 통해 Visual Studio 2005 로 하게 된다.
SDK 를 설치하고 개발환경을 구축하고 보면 SDK 에서 에뮬레이터를 제공한다는 사실을 알게 되는데
각각 Smartphone, Smartphone QVGA 라고 밖에 되어있지 않다는 것을 볼 수 있다.

WM5.0 Smartphone QVGA 는 Landscape 모드를 찾을수도 없고 모양새도 아래와 같이 블랙잭과는 전혀! 딴판이다.

사용자 삽입 이미지

숫자판이 핸드폰과 동일하다.



이 상태에서 Landscape 를 찾아도 별 볼일 없음은 당연할 것이다.

이 상황에서 블랙잭과 같은 환경을 만들어 보려고 수차례 애를 썼으나 별 소득은 없었고, 다음과 같은 설정을 통해 블랙잭과 거의(!) 동일한 환경을 구축하는데 성공하였다.

1. Windows Mobile 5.0 SDK for Smartphone 을 깐다.
 - 블랙잭 (SPH-M6200) 은 WM5.0 Smartphone 운영체제이기 때문에 일반 WM 5.0 SDK를 깔면 안된다.
2. Windows Mobile 6 Professional and Standard Software Development Kits Refresh 로 간다.
 - 이 중에서 Windows Mobile 6 Standard SDK를 깔면 Smartphone (WM6 에서는 Windows Mobile Standard 로 이름이 변경) 용 SDK를 설치할 수 있다. (실제로 쓰지는 않을 것임)
 - 원래 사이트에는 WM6 SDK 를 통해 WM5 용 응용 프로그램도 개발할 수 있다고 써있으나 실험결과는 꽝
3. Windows Mobile 6 Localized Emulator Images  를 설치한다.
 3-1. (이것이 핵심. 2번과 순서를 바꾸면 안됨)
 3-2. 여기서 KOR Standard 이미지를 받아서 설치
 3-3. 모두 설치하고 나면 Device Emulator Manager 설정이 아래와 같이 된다.

사용자 삽입 이미지

WM 5.0 Smartphone 에뮬레이터와 WM 6 에뮬레이터가 모두 다 깔린 모습


4. 프로젝트 설정
 4-1. 프로젝트 설정은 아래와 같이 하면 된다.
사용자 삽입 이미지

Windows Mobile 5.0 Smartphone SDK 로 해야함.

 4-2. 즉, 컴파일 설정은 Windows Mobile 5.0 Smartphone SDK (ARMV4I) 로 하고,  디바이스는 에뮬레이터로 할때는 KOR Windows Mobile 6 Landscape QVGA Emulator (한글이 나오기 때문), 실제 디바이스로 할 때는 Windows Mobile 6 Standard Device / Windwos Mobile 5.0 Smartphone 아무거나 해도 잘 돌아간다.

사용자 삽입 이미지

여기서 Windows Mobile 6 Standard Landscape QVGA Emulator 를 골라야 한다. 한글을 보고싶다면 앞에 KOR 이 붙은걸 고르면 된다.

설정을 다 하고 Windows Mobile 6 에뮬레이터를 실행하면 아래와 같이 뜬다.

사용자 삽입 이미지

한글 WM6 가 뜬 모습. 블랙잭과 거의 동일한 구성이다.


 Windows Mobile 6는 Windows Mobile 5 에 대한 호환성을 기본적으로 갖추고 있기 때문에 우리가 빌드한 WM5 용 응용프로그램이 전혀 무리 없이 돌아가게 되며 구성또한 블랙잭과 동일하기 때문에 WM5 SDK 로 힘겹게 개발하는 것 보다 정신 건강에도 이롭다.

Windows Mobile 6 SDK를 까는 이유.

하드가 낭비되는 아주 안좋은 것이지만 핵심은 다음과 같다.

Windows Mobile 6 SDK를 설치하고 나면 Device Emulator Manager에 Windows Mobile 6 (Normal/Landscape QVGA/QVGA) Emulator 가 설치 된다.

Windows Mobile 5 Smartphone  Emulator 에는 블랙잭과 동일한 환경을 제공하는 Emulator가 없다. 즉 Landscape QVGA를 지원하는 환경이 없다는 말이다.

그리고 꼭 필요하지는 않지만 QWERTY 키보드 역시 에뮬레이터에 포함되어있지 않다.

참고로 컴파일 설정을 Windows Mobile 6 로 하면 절대로 블랙잭에서 돌아가지 않는다. 그렇기 때문에 Windows Mobile 5 SDK for Smartphone을 꼭 깔아야 WM6 에뮬레이터와 블랙잭 모두에서 돌아가는 이미지를 만들 수 있다.



Windows Mobile Localized Emulator Images를 까는 이유

블랙잭은 한글로 로컬라이징된 WM5 Smartphone 환경이다. 기본적으로 제공되는 에뮬레이터는 영문 이미지이기 때문에 영문 윈도가 가동된다.

이를 한글 환경으로 하기 위해 로컬라이즈드 이미지를 설치하는 것이다. 이를 설치하고 나면

KOR Windows Moble 6 Standard Emulator

KOR Windows Moble 6 Standard Landscape QVGA Emulator

KOR Windows Moble 6 Standard Emulator QVGA Emulator

의 세가지 항목이 추가된다.

그런데, Windows Mobile 6 SDK를 안깔고 Localized Emulator 만 깔면 Device Emulator Manager 에 WM6 이미지가 들어가지 않기 때문에 실제 개발환경에 이용할 수가 없게 된다.




Trackback 1 : Comment 1
  1. ash84 2008.10.15 14:43 신고 Modify/Delete Reply

    좋은글 감사합니다. ㅋㅋㅋ^^

Write a comment


Visual Studio 2005과 Service Pack 1을 한번에 설치하기

프로그래밍/개발 2007.09.18 17:43


Visual Studio 2005의 SP1을 설치해 보신 분들은 프로그레스 바도 없이 30분 ~ 1시간 이상을 잡아먹고 있는 무성의한 설치창을 알고 계실 것입니다.

사용자 삽입 이미지

대략 정신을 우주로 날려줍니다.



무슨 이유인지는 알 수 없지만 비정상적으로 설치시간도 길고 지루하기 짝이 없지요.
이쯤되면 SP1서비스팩을 개선하던지 SP1 이 통합된 설치 디스크가 공급될만도 한데 그런 기미는 보이지 않습니다. (곧 발매될 Visual Studio 2008 덕분인지도 모르겠지만요.)

저만 그런 답답함을 느낀게 아니었는지 Microsoft 의 한 개발자가 MSDN Blog 를 통해서 Visual Studio 2005와 Service Pack 1 통합 설치본을 만드는 방법을 공개하였습니다.

Slipstreaming Visual Studio 2005 Service Pack 1

사이버 포뮬러라는 만화를 보셨거나.. 아니면 자동차 경주에 관심이 있으신 분들이 들어보셨을만한 Slipstream이라는 용어를 쓰고 있는게 재미있네요. 영어가 짧아서 저 문장 자체가 어떻게 해석되는지 잘 모르겠지만, Visual Studio 2005 를 설치할때 자동으로 Service Pack1 을 끼어들게 한다는 의미로 쓴것 같기도 하고.. 영어는 참 어렵네요?? (이게 결론??)

별로 그럴일은 없겠지만, 이렇게 설치한 SP1 은 따로 삭제할 수 없다고 합니다.
저는 이 글을 쓰기 전에 시키는대로 따라 해 보았는데, 이렇게 설치한 VS2005가 지금 잘 돌아가고 있습니다. Service Pack1 을 까는 악몽같은 시간이 없으니 정말 상쾌합니다.



Trackback 0 : Comments 2
  1. yhpdoit 2007.09.24 12:38 신고 Modify/Delete Reply

    그냥 설치 눌러놓고 키고 잤다는...

  2. mahalo 2007.09.24 14:38 신고 Modify/Delete Reply

    저도 통합본 만들기 전에 부득이하게 한 세번정도 연속으로 (한글판 영문판 번갈아가며) 깔아야 했었는데, 잠을 잘 수도 없고... 완전 스트레스더군요. ㅎㅎ
    그때 저런걸 알았다면 좀 더 쾌적했을텐데 말이죠

Write a comment