'DEBUGMSG'에 해당되는 글 3건

  1. 2008.05.28 DEBUGMSG를 release모드에서 출력하기
  2. 2008.05.22 CE에서의 디버깅 메시지 - RETAILMSG
  3. 2007.11.02 릴리즈 모드에서 "DEBUGMSG()"보는 방법
2008. 5. 28. 11:51

DEBUGMSG를 release모드에서 출력하기



BSP의 소스 내용을 보면, 디버그 메시지를 뿌려주는 부분이 대부분 DEBUGMSG()로 되어있는 것을 볼 수있다.
이것은 커널을 디버그(debug)모드로 빌드를 했을 때 볼 수 있는 디버깅 메시지이다. 하지만, 보통 디버그 모드 보다는 릴리즈(release)모드로 빌드를 하기 때문에 이 디버깅 메시지를 확인 할 수 없다.

작업을 하다 보면 디버깅 메시지를 확인해야 할 필요가 많이 있다. 그렇다구 해서 일일이 DEBUGMSG()RETAILMSG()로 바꾸어 빌드하는 것두 곤욕이다.
이럴 때 다음과 같은 방법을 사용하면 될 듯 하다.
뭐.. 공공연하게 많이 사용되는 방법이긴 하지만.. 그래도 팁이라고 ... -_-;

디버깅 메시지를 보고자 하는 파일(.cpp, .c)에 다음을 선언해주자.
#undef DEBUGMSG
#define DEBUGMSG(a, b) RETAILMSG(1, b)

위의 두 줄을 선언하게 되면, 해당 파일의 DEBUGMSG()의 디버깅 메시지를 릴리즈모드에서도 확인할 수 있다.

참고로 헤더파일(.h)에 선언하는 것은 비추이다. 그 헤더파일을 include하는 모든 함수에 적용이 되어 이놈 저놈다 디버깅 메시지를 출력하기에... 상당히 디버깅하기에 복잡할 수 있다. 디버깅 하고자 하는 필요한 파일에만 선언을 할 수 있도록!!

추가로 RETAILMSG()에 관련된 내용은 http://todayis.tistory.com/108 에서 확인 할 수 있다.



2008. 5. 22. 17:12

CE에서의 디버깅 메시지 - RETAILMSG



플랫폼 빌더 내의 PUBLIC나 PLATFORM쪽의 소스들을 보게 되면 'DEGUBMSG()'라는 녀석을 자주 볼 수 있다. 이녀석은 디버깅 모드로 빌딩을 했을 때 디버깅 메시지를 볼 수 있도록 해주는 녀석이다. 하지만.. 디버깅 모드로 빌드를 하게되면.. 용량도 엄청(?)커지게 되고.. 느리지고.. 뭐 그래서 잘 하지 않을 것이다.

그렇다면.. 릴리즈 모드로 빌드를 해서 디버깅 메시지를 어떻게 확인을 할 수 있을까? -_-
그래서 'RETAILMSG()'라는 녀석이 존재한다.
'RETAILMSG()'라는 녀석은 릴리즈 모드로 빌드를 했을 때 디버깅 모드의 'DEBUGMSG()'와 마찬가지로 디버깅 메시지를 볼 수 있도록 해주는 녀석이다.

RETAILMSG()의 문법은 다음과 같다.
RETAILMSG( Expression, Message)
  - Expression : Boolean expression used to determine if the message would be output
  - Message   : Expression to be printed using printf format style.

Expression는 0 혹은 0이 아닌 다른 것으로써, 0이 아니면 Message의 내용을 출력하게 된다..
Message는 일반적인 printf와 같은 포맷으로 동작을하고, Message의 내용이 디버깅 메시지로 출력이 된다.

주의할 사항은 RETAILMSG는 2개의 인자(Expression, Message)만을 받기 때문에 두번째 인자를 주의해서 사용해야 한다.
예를 들면 다음과 같다.
예...
       RETAILMSG(1, (TEXT("This is Test Message...")));
       Expression : 1
       Message   : (TEXT("This is Test Message..."))
또 다른 예...
       RETAILMSG(1, (TEXT("This value is %x\r\n"), value));
       Expression : 1
       Message   : (TEXT("This value is %x\r\n"), value)

위의 예에서 보는 것처럼 Message에 들어갈 내용을 괄호로 묶어 하나의 인수처럼 사용을 해야한다. 괄호로 묶지 않고 일반 C에서 사용하는 printf처럼("xxx %d", value) 사용하면 에러가 발생한다. -_-


2007. 11. 2. 11:35

릴리즈 모드에서 "DEBUGMSG()"보는 방법



WinCE로 작업을 하다 보면 디버깅 메시지의 필요성을 죽도록 느낄 수 있다.
그럼 어찌하면 디버깅 메시지를 볼 수 있을까??

간단하게 '디버깅 모드'로 빌드하면 된다. ㅎㅎ
BSP를 보게 되면, 소스에서 'DEBUGMSG()'라는 녀석을 자주 볼 수 있는데.. 이녀석이 디버깅 메시지를 뿌려주는 것이다.

하지만 이미지의 크기(?)등에 의해 보통 '디버그 모드'보다 '릴리즈 모드'로 빌드를 하게 된다.
이 경우 디버깅 메시지는 출력되지 않는다. ㅡㅡ;

하지만.. 우리가 원하는건... 디버깅 메시지..
왜?? 어디가 잘못됐는지 수정을 해야하는지 뭐든 봐야 아니깐.. ㅡㅡ;

하지만, '릴리즈 모드'에서도 디버깅 메시지의 내용을 볼 수 있는 방법이 있다고 한다.

그것은...

디버깅 할려는 파일(.cpp, .c)에 아래의 것을 선언해주면 된다.

#undef DEBUGMSG
#define DEBUGMSG(1, b) RETAILMSG(1, b)

릴리즈 모드에서는 'RETAILMSG()'라는 녀석을 메시지를 출력하는 용도로 사용하게 되는데.. DEBUGMSG()라는 녀석을 RETAILMSG()로 출력하게 define하는 것이다.

위와 같이 디버깅 메시지를 보려 하는 파일을 수정을 해주면, 해당 파일의 DEBUGMSG 메시지를 릴리즈 모드에서도 확인할 수 있다.

PS : 헤더파일에는 선언하지 말라는 말이 있다... 여러 파일에서 같은 헤더파일을 부를 경우 이놈, 저놈.. 다 디버깅 메시지를 출력할 수 있으므로.... 흠.. 난리겠구만.. ^^;