so viel DEBUG("bla") im code ...
-
Ich oute mich mal schnell: Ich debugge fast immer (für logikfehler) mit output ... noch nie mit dem debugger ... ich habs nie gelernt

SOllte ich auf DEBUG(bla) verzichten und im Falle des Falls nen debugger zu Rate ziehen? Oder anders:
Kann ein debugger den Output vollständig ersetzen?
Ich gebe ohnehin nur werte von variablen aus ...
-
namenamename schrieb:
Kann ein debugger den Output vollständig ersetzen?
Ich gebe ohnehin nur werte von variablen aus ...Nein, denn der Kunde wird dir keinen Software-Debugger einsetzen sondern dir maximal das generierte Log-File schicken damit du auf Problemlösungssuche gehen kannst. Alles was er an Text dazu liefert lautet "Software ist abgestürzt, dabei habe ich nichts gemacht" (ergo: er hat nicht den Button "jetzt abstürzen" gedrückt).
MfG SideWinder
-
Aso, das meinst du.
Ich löse das so, dass ich dafür eine Funktion einbaue, die mir entweder die sachen auf dem Bildschirm ausgibt oder in eine Datei speichert.
Die fürs in eine Datei speicher sieht so aus:template<typename A, typename B, typename C> void logg(A function, //Name der Funktion in der dies hier aufgerufen wird B text, // Text zur beschreibung wo genau dies aufgerufen wird und was ausgegeben wird C var){ // Variable die ausgegeben wird .... //in Datei schreiben, Zeitstemple dazu, usw };Ein aufruf, der zb abspeichert ob eine Funktion korrekt ausgeführt wure ist
logg("Assets.init_subclass", "Laden aller Klassen",assets->init_subclass());wobei assets->init_subclass() true oder false zurückgibt.
-
SideWinder schrieb:
namenamename schrieb:
Kann ein debugger den Output vollständig ersetzen?
Ich gebe ohnehin nur werte von variablen aus ...Nein, denn der Kunde wird dir keinen Software-Debugger einsetzen sondern dir maximal das generierte Log-File schicken damit du auf Problemlösungssuche gehen kannst. Alles was er an Text dazu liefert lautet "Software ist abgestürzt, dabei habe ich nichts gemacht" (ergo: er hat nicht den Button "jetzt abstürzen" gedrückt).
MfG SideWinder
Ja das Problem hierbei ist, dass wenn ich mit dem Output was anfangen will, fasst sone Logfile schonmal locker 15Mb und das bei eher einfachen sachen..... Ich könnte zur Laufzeit überprüfungen anstrengen um die logfile auf das absolute minimum zu reduzieren, aber dann ist die Performance nicht mehr zumutbar!
Und leider wird mir auch niemand die daten schicken wollen um selber tests durchzuführen!
-
SideWinder schrieb:
Nein, denn der Kunde wird dir keinen Software-Debugger einsetzen sondern dir maximal das generierte Log-File schicken damit du auf Problemlösungssuche gehen kannst.
Sowei ich es verstanden habe, ist das DEBUG-makro sowieso nur im Debug-Modus an, ist also mit der fertigen Release-Version sowieso nicht mehr drin.
Mein Rat: Eigne dir die Funktionsweise des Debuggers an. Dort kannst du Schritt für Schritt durch den Propgrammcode gehen und somit live sehen, was er macht und wie Variablen im Moment belegt sind.
-
@Neo Gandar ...
Ja das ist natürlich viel eleganter, aber mir gehts gerade wirklich rein um die Übersicht ... bei mir ist alles mit Debug-zeilen vollgemüllt, dass man schon den eigendlichen code suchen muss! (Leicht überspitzt ausgedrückt
)
-
Jammer schrieb:
SideWinder schrieb:
Nein, denn der Kunde wird dir keinen Software-Debugger einsetzen sondern dir maximal das generierte Log-File schicken damit du auf Problemlösungssuche gehen kannst.
Sowei ich es verstanden habe, ist das DEBUG-makro sowieso nur im Debug-Modus an, ist also mit der fertigen Release-Version sowieso nicht mehr drin.
Mein Rat: Eigne dir die Funktionsweise des Debuggers an. Dort kannst du Schritt für Schritt durch den Propgrammcode gehen und somit live sehen, was er macht und wie Variablen im Moment belegt sind.
Ja genau ... hast ja eigendlich recht ... für die release version frage ich nach einem ganz bestimmten Teil des Datensatzes bei einem Fehler, ob der fürs debuggen verwendet werden darf.... so wars zumindest geplant.
Kann der Debugger bei jedem "stopp" mir denn jede beliebige variable verraten? (Ja ich weiß, ich arbeite mich schon noch rein)
-
Dann kann ich mich den anderen Posts nur anschließen. Lerne mit dem Debugger umzugehen, damit kannst du sehr einfach Variablen überwachen, ungültig gewordene Zeiger uvm schnell finden.
#Edit
Ja, der Debugger kann dir an jedem Haltepunkt den Inhalt aller bereits initialisierten Variablen, Listen und was es sonst noch so gibt zeigen.
-
Okay danke Leute ... ich werd meinen output auf die info von fehler und fehler art reduzieren. Fürs richtige Debuggen brauche ich alle daten also nehm ich das zeug raus.

-
Jammer schrieb:
SideWinder schrieb:
Nein, denn der Kunde wird dir keinen Software-Debugger einsetzen sondern dir maximal das generierte Log-File schicken damit du auf Problemlösungssuche gehen kannst.
Sowei ich es verstanden habe, ist das DEBUG-makro sowieso nur im Debug-Modus an, ist also mit der fertigen Release-Version sowieso nicht mehr drin.
Deswegen hat man modernen Log-Systemen auch ein Level-System verpasst. Während DEBUG-Ausgaben nur in Debug-Versionen vorhanden sind und hier auch das Log-File aufblasen können werden ERROR-Ausgaben oder wichtige INFO/WARN-Ausgaben auch im Release-Modus geloggt.
Sehr angenehme API bspw: log4j
MfG SideWinder
-
SideWinder schrieb:
Sehr angenehme API bspw: log4j
Nur schade dass wir hier im C++ Forum sind! :p
-
HIHIHI schrieb:
SideWinder schrieb:
Sehr angenehme API bspw: log4j
Nur schade dass wir hier im C++ Forum sind! :p
--> log4cpp