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. 😉


Anmelden zum Antworten