SDL ttf Problem



  • Joa okay, wenn dass so wichtig ist sollte ich den Umgang mit einem Debugger wirklich lernen, kennt jemand eine gute Anleitung o.ä. dafür?

    PS:
    Ich hab nun auch den Fehler gefunden, ziemlich dummer Fehler:

    if(TTF_Init() == -1)
    {
        return 1;
    }
    

    MfG
    Stromberg



  • Hallo

    Vielleicht hilft dir das:

    http://magazin.c-plusplus.net/artikel/Debuggen mit VCPlusPlus6

    chrische



  • Irgendwie geht der Debugger nicht. N paar Menüpunkte kann ich nicht anklicken, sind so hell grau....und wenn ich einen Breakpoint setze, dann passiert überhaupt nix. Obwohl ich mich im Debugg Modus befinde, es passiert dass gleiche wie beim ganz normalen Compilieren.
    Ich hab auch dass Häckchen bei "produce debugging symbols" gesetzt.
    Hat von euch vll. jemand Codeblocks? Wie bekomme ich den Debugger zum laufen? Ich hab ka...ich weiß nicht mal genau ob er funktioniert....
    Codeblocks Version ist 8.02 war so n rundum Packet mit Compiler + Debugger.

    Ich hoffe jemand von euch kann mir helfen, hab kein Plan wie ich da jetzt was mitm Debugger mache.

    MfG
    Stromberg



  • Also im Prinzip brauchst du den Debugger in sehr wenigen Fällen. Zumindest ich. Wollte mich nie in diesen dbg oder wie das Teil das beim gcc compiler dabei ist, einarbeiten. Und habe schon größere Projekte ohne Probleme geschrieben.

    Dass SDL standardmäßig die Ausgabe in Dateien umleitest weisst du ja mitlerweile. Weiß jetzt nicht ob das auch unter Linux passiert.

    Mit dem Code kannst du das wieder ausschalten. Dann wirds normal in die Konsole ausgegeben. Funktioniert aber nur unter Windows.

    AllocConsole();
    	freopen("CON", "w", stdout);
    	freopen("CON", "w", stderr);
    	// freopen("CON", "r", stdin); // keine ahnung ob man das auch tun muss
    

    Aber in einer (oder 2) Datei alles zu haben ist nicht schlecht, wenn du Fehler suchen willst. Und die exe mal nicht aus codeblocks startest.

    Fürs debuggen waren mir diese Markros immer hilfreich:

    #define LOGLINE do { std::cout << __LINE__ << ": " << __FILE__ << std::endl; }while(0)
    
    #define LOGVAL(x) do { std::cout << #x << " = '" << (x) << "'" << std::endl; }while(0)
    

    mit dem ersten wird die Zeile + Dateiname ausgegeben in dem sich LOGLINE befindet. Mit LOGVAL(x) kannst du schnell den Wert einer Variablen ausgeben.

    Also damit ausgerüstet und nach Auschschlussverfahren konnte ich bisher fast alle meine Fehler finden.

    Meistens müssen noch Bestimmte Anweisungsblöcke ausgeklammert werden. Mit diesem Trick funktioniert das sehr schnell:

    So auskommentiert
    /*
    hier
    steht 
    ..
    viel
    drin 
    
    Beachte das // Am Anfang in der letzten Zeile
    // */
    

    Um den Block wieder zu aktivieren.
    Schreibe bei der oberen /* ein / davor.

    also

    //*
    Jetzt gehts rund...
    
    hier
    steht 
    ..
    viel
    drin 
    
    Beachte das // Am Anfang in der letzten Zeile
    // */
    

    Ansonsten verwende ich noch diesen Memory Manager: http://www.paulnettle.com/pub/FluidStudios/MemoryManagers/Fluid_Studios_Memory_Manager.zip

    Und fast vergessen, schreibe viele Unittests...


Anmelden zum Antworten