Debugmodus



  • Hallo

    Ich würde gerne in meinen Programm bestimmte Sachen (zum Beipsiel Bibliotheken linken oder ins Logfile schreiben) nur ausführen, wenn ich im Debugmodus bin. Wie kann man das bewerkstelligen.

    chrische



  • Hallo

    mit dem Präprozessor

    bis bald
    akari



  • Anbieten würde sich ein Makro NDEBUG welches gesetzt ist wenn nicht gedebuggt wird, denn die Diagnosefunktionen des (C-)Standard nutzen dieses Makro dann gleich mit 😉



  • Hallo

    LordJaxom schrieb:

    Anbieten würde sich ein Makro NDEBUG welches gesetzt ist wenn nicht gedebuggt wird, denn die Diagnosefunktionen des (C-)Standard nutzen dieses Makro dann gleich mit 😉

    Das verstehe ich nicht. Soll ich das Makro selber setzen? Ich dachte, es gibt ein Makro, dass sich bsp. DEBUG nennt und das ich nur per #ifdef DEBUG prüfen muss.

    chrische



  • Ja Du sollst das Makro selber setzen, wenn nicht Debug compiliert wird. Vielleicht nicht Du persönlich, sondern Deine Entwicklungsumgebung (Glaskugel in Reinigung -> ich weiss nicht welche Du benutzt), oder Dein Makefile.

    Irgendwer muss es wohl setzen oder soll der Compiler hellsehen wie Du gerade compilierst? 😉



  • Hallo

    Also ich benutze VS2005. Ich dachte schon, dass der Compiler weiß. wie gerade compiliert wird. Ich soll also selber eine Konstante setzen, wenn ich im Debugmodus bin und wenn nicht, dann soll ich sie nicht setzen?

    chrische



  • Im Release-Modus wird automatisch NDEBUG definiert.



  • Nee, umgekehrt 😉

    Auf jeden Fall weiss nicht der Compiler wie Du kompilierst, sondern die IDE. Die teilt dem Compiler dann entsprechende Definitionen mit. Ich hab grad mal im VS2005 nachgeschaut, das setzt im Release-Mode den Schalter /D"NDEBUG", und im Debug-Mode den Schalter /D"_DEBUG".

    Das heisst diese IDE honoriert den Standard und setzt für Dich den Schalter NDEBUG, wenn nicht gedebuggt wird. Ist letztendlich eine persönliche Entscheidung wie Du es machst, aber wenn einem der Service schon geboten wird, würde ich ihn auch so nutzen, also meine eigenen Defines so machen dass im Debug-Modus eben kein NDEBUG gesetzt ist.

    Achtung, Beispiel aus den Fingern gesogen 😉

    #if !defined(NDEBUG)
    #   define DEBUG_LOG(x) cerr << x << endl
    #else
    #   define DEBUG_LOG(x)
    #endif
    


  • Hallo

    Ich habe das jetzt so gelöst:

    #if !defined(NDEBUG)
    	#pragma comment(lib,"tribased.lib")
    	#pragma comment(lib,"d3dx9d.lib")
    #else
    	#pragma comment(lib,"tribase.lib")
    	#pragma comment(lib,"d3dx9.lib")
    #endif
    

    Passt das so, oder gibt es da noch etwas zu kritisieren.

    chrische


Anmelden zum Antworten