assert



  • Hi,

    wozu dient assert(....) ?
    Kann man dies auch durch irgend etwas anderes ersetzten, denn mein Debugger hat Probleme mit diesem Befehl.

    Gruß Der Unregistrierte



  • was benutzt du denn für einen Debugger



  • asserts sin wichtig um schwere fehler im programm auszumachen

    z.b.

    int val[100];
    
    void SetVal(int ID,int value)
    {
      assert(ID>=0 && ID<100);
      val[ID]=value;
    }
    

    warum hat dein debugger damit probleme?
    wenn ein assert auftritt ist das wie gesagt ein schwerwiegender design fehler,
    mit dem das programm nicht weiterlaufen kann

    für weniger schlimme fehler benutzt man rückgabewerte,errorstrings und exceptions



  • Sovok schrieb:

    wenn ein assert auftritt ist das wie gesagt ein schwerwiegender design fehler,
    mit dem das programm nicht weiterlaufen kann

    Ne, ist kein Designfehler, aber trotzdem schwerwiegend.



  • ersetze design durch logik



  • Wie ist das eigentlich, reicht es, wenn ich ASSERTs zum testen auf Nullpointer,
    Arraygrenzenüberschreitungen, ... nehme und wenn in der Debugversion nie was
    schief geht, in der Release, dann gar nicht mehr testen, oder sollte man trotzdem
    noch ne if-bedingung einbauen?
    Bei Ressourcen, wie nen Fenster erstellen, Speicher anfordern, etc. muss man natürlich
    prüfen, da hat man kein Einfluss drauf.



  • Hi,

    also ich benutze den Debugger con MSVisual C++ 6.0. Genauer gesagt, gibt es bei der Debugversion keine Fehler und mein Programm läuft, aber bei der Releaseverson stürtzt mein Programm ab bzw. startet nicht.

    Auf der Website von msdn habe ich dann folgendes gefunden:

    By default, a release build uses optimizations. When you use optimizations to create a release build, the compiler will not produce symbolic debugging information. The absence of symbolic debugging information, along with the fact that code is not generated for TRACE and ASSERT calls, means that the size of your executable file is reduced and will therefore be faster.

    Bye



  • guck mal in der MFC FAQ. da stehen mögliche Gründe. Hat nichts mit assert zu tun.



  • Bei mir war das auch einmal so, dass die Debug-Version meines Programms problemlos lief, aber die Release-Version nicht stabil war. Einmal war das deswegen, weil ich über Arraygrenzen gelesen und geschrieben habe...


Anmelden zum Antworten