안녕하세요? 착한이입니다.
WEC 2013을 포함한 Windows CE(WinCE) 운영체제에서는 소스 코드 디버깅을 위해
RETAILMSG, DEBUGMSG, ERRORMSG 와 같은 함수를 주로 사용합니다.
여기에 다음 사항을 추가로 알아 두시면, 소스 코드 디버깅 시에 유용하게 사용할 수 있습니다.
이번 강좌에서는 디버깅 메시지 출력 관련 참고 사항에 대해 알아 보겠습니다.
1. __WFUNCTION__ 매크로
Visual Studio 에서는 함수 이름을 출력하기 위해 __FUNCTION__ 을 사용합니다.
추가로 unicode 문자열로 출력하기 위해 __WFUNCTION__ 을 사용하기도 합니다.
만약 __WFUNCTION__ 이 정의되어 있지 않다면, 다음 코드를 추가하면 됩니다.
#ifndef __WFUNCTION__
#define __WFUNCTION__ TEXT(__FUNCTION__)
#endif
다음과 같이 RETAILMSG로 해당 소스 코드 라인의 함수명을 출력할 수 있습니다.
RETAILMSG(TRUE, (TEXT("함수명 %s\n"), __WFUNCTION__));
2. OutputDebugStringW
RETAILMSG와 같이 Release와 Debug 모드에서 디버깅 메시지를 출력할 수 있는 함수입니다.
OutputDebugStringW 는 unicode 문자열을 출력할 수 있습니다.
사용 방법은 다음과 같습니다.
OutputDebugStringW(L"디버깅 출력 테스트\n");
3. NKDbgPrintfW
RETAILMSG와 같이 Release와 Debug 모드에서 디버깅 메시지를 출력할 수 있는 함수입니다.
OAL에서 디버깅 메시지를 출력할 때 사용할 수 있습니다.
NKDbgPrintfW 는 unicode 문자열을 출력할 수 있습니다.
그리고 특정 형식의 문자열을 디버깅 메시지로 출력할 수 있습니다.
사용 방법은 다음과 같습니다.
int data=1004;
NKDbgPrintfW(TEXT("datat is %d\n"), data);
NKDbgPrintfW가 정의되어 있지 않다면, 다음 코드를 추가하면 됩니다.
static __inline void WINAPIV NKDbgPrintfW(const wchar_t* szFmt, ...)
{
wchar_t szBuffer[1024];
va_list args;
va_start(args, szFmt);
vswprintf_s(szBuffer, _countof(szBuffer), szFmt, args);
OutputDebugStringW(szBuffer);
OutputDebugStringW(L"\n");
va_end(args);
}
여기까지 Windows CE에서 디버깅 메시지 출력 시, 참고할 수 있는 사항에 대해
알아 보았습니다.
주로 RETAILMSG 함수를 사용하지만 OutputDebugStringW와 NKDbgPrintfW 함수를
알아 두시면 유용하게 사용할 수 있습니다.
그럼 즐거운 개발 하시길 바랍니다.
WeAreDev에서 만든 WAD-MX6W CPU 모듈과 솔루션에도 많은 관심 부탁 드립니다.
WAD-MX6W CPU 모듈의 사양은 다음과 같습니다.
1. CPU : i.MX6 (Cortex A9 - Max 1.2GHz) Quad Plus, Quad, Dual Plus, Dual, Solo Core
2. RAM : 2GB DDR3 (Max 4GB)
3. eMMC : 8GB (Max 128GB)
4. WiFi & Bluetooth Combo
5. Connector : 300 pins Connector
6. OS : Windows Embedded Compact 2013(WinCE 8),
Windows Embedded Compact 7(WinCE 7),
Windows 10 IoT Core,
Android 8.0, 9.0
Linux(Yocto)
QNX
7. Size : 50 x 32 mm