DebugConsole
-
Hallo, versuche gerade eine DebugConsole für ein Projekt schreiben. Funktioniert auch soweit ganz gut abeeer:
Irgendwie scheint es irgendwie zufällige Zeichen in meine Console zu schreiben (Sobald ich etwas reinschreibe), naja ich mache mal einen Screenshot, der erklärt es bestimmt besser:
http://img3.imagebanana.com/img/6x89lqzm/thumb/debugconsole.JPG
Achja, hier der Code:
HANDLE hDebugConsole; DWORD dw_msg_size; void BuildDebugConsole() { AllocConsole(); hDebugConsole = (HANDLE)GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTitle("DebugConsole"); } void __cdecl add_log(const char * fmt, ...) { #ifdef DEBUG va_list va_alist; char logbuf[256]; va_start (va_alist, fmt); vsnprintf_s (logbuf+strlen(logbuf), sizeof(logbuf) - strlen(logbuf),100, fmt, va_alist); va_end (va_alist); WriteConsole(hDebugConsole,logbuf, strlen(logbuf),&dw_msg_size, NULL); WriteConsole(hDebugConsole, "\n", strlen("\n"), &dw_msg_size, NULL ); #endif }Ich benutze es wie folgt..
add_log( "m_pClient = [0x%X]", m_pClient ); add_log( "m_pEngine = [0x%X]", m_pEngine ); add_log( "m_pSurface = [0x%X]", m_pSurface ); add_log( "m_pMatSystemSurface = [0x%X]", m_pMatSystemSurface ); add_log( "m_pEntList = [0x%X]", m_pEntList ); add_log( "m_pRender = [0x%X]", m_pRender ); add_log( "m_pMaterialSystem = [0x%X]", m_pMaterialSystem ); add_log( "m_pModelInfo = [0x%X]", m_pModelInfo ); add_log( "m_pDebugOverlay = [0x%X]", m_pDebugOverlay );
-
strlen auf ein uninitialisiertes Char-Array?
-
Was soll denn die Verwendung von "strlen" in dieser Zeile???
vsnprintf_s (logbuf+strlen(logbuf), sizeof(logbuf) - strlen(logbuf),100, fmt, va_alist);
-
Ok, hab das mal gefixt und scheint zu funtionieren.

Dankeschön.
