PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] Methoden zum Debuggen


squall23
2008-10-11, 19:18:57
Ich versuche mich gerade etwas über verschiedene Debugging Methoden schlau zu machen, die üblicherweise angewandt werden. Allerdings schaffe ich es einfach nicht den sogenannten roten Faden zu finden.
Auf der Suche nach Hinweisen habe ich von normal asserts bis zu Konstrukten wie dem "function call stack trace utility (http://www.codeproject.com/KB/cpp/cmtrace.aspx)" alles mögliche gefunden. Allerdings nichts wirklich handfestes. Ich habe auch einiges zum Thema Post Mortem Debugging (hauptsächlich mit DrWatson) gefunden. Jetzt frage ich mich wie es wirklich gemacht wird.

Was kann man einsetzten, dass nicht nur Platformspezifisch funktioniert?
Wird da mit selbst gestrickten Logs gearbeitet oder eher in Richtung Core/Mini-Dump?
Habt ihr vll. Links zu dem Thema bzw. Hinweise?

mfg squall23

squall23
2008-10-14, 10:15:19
Auch wenn ich diese Nachfragerei hasse, muss ich es an dieser stelle trotzdem tun.

Wie kann es sein, dass zu diesem Thema niemand etwas zu sagen hat?

Ich kann mir kaum vorstellen, dass eure Software immer Fehlerfrei ist. Außerdem treiben sich ja ein paar ganz gute Coder hier herum. Von daher hab ich mir schon ein paar Anregungen erwartet.

Wäre schon für jeden Hinweis im Segment Fehlersuche und Debugging dankbar.

mfg squall23

RLZ
2008-10-14, 10:35:35
Auch wenn ich diese Nachfragerei hasse, muss ich es an dieser stelle trotzdem tun.

Wie kann es sein, dass zu diesem Thema niemand etwas zu sagen hat?

Ich kann mir kaum vorstellen, dass eure Software immer Fehlerfrei ist. Außerdem treiben sich ja ein paar ganz gute Coder hier herum. Von daher hab ich mir schon ein paar Anregungen erwartet.

Wäre schon für jeden Hinweis im Segment Fehlersuche und Debugging dankbar.
Das hängt u.U. damit zusammen, dass die meisten Leute mit dem VS Debugger zufrieden sind. ;)
Eigentlich hab ich bisher jedes Problem mit ordentlichem Debugger (VS, ProDG), Debugallokator, VLC und voll aktiviertem Debugheap gelöst bekommen. Ein Logsystem ist auch manchmal ganz hilfreich...

Wenn ich ans Studium zurückdenke, wo man mit rein Textausgabe oder höchstens mal mit gdb in der Konsole etwas debugt hat.... Da fragt man sich, wie man jemals was zum laufen bringen konnte. X-D

squall23
2008-10-14, 12:54:08
Das hängt u.U. damit zusammen, dass die meisten Leute mit dem VS Debugger zufrieden sind. ;)

Sieht wohl so aus. :uponder:


Eigentlich hab ich bisher jedes Problem mit ordentlichem Debugger (VS, ProDG), Debugallokator, VLC und voll aktiviertem Debugheap gelöst bekommen. Ein Logsystem ist auch manchmal ganz hilfreich...


Und wie machen das unsere Linux Geeks?
GDB und Valgrind?


Wenn ich ans Studium zurückdenke, wo man mit rein Textausgabe oder höchstens mal mit gdb in der Konsole etwas debugt hat.... Da fragt man sich, wie man jemals was zum laufen bringen konnte. X-D

An der Stelle befinde ich mich wohl gerade ^^

ScottManDeath
2008-10-14, 18:29:03
Sieht wohl so aus. :uponder:
Jups. VS debugger und dann noch ein Logsystem (http://rafb.net/p/ihkiXj81.html) mit nuetzlichen Makros. Exceptions, Assertions usw werden an die Konsole, eine Datei, DebugOut und gegebenenfalls noch an das UI gesendet.


Und wie machen das unsere Linux Geeks?
GDB und Valgrind?


Die wollen es nicht anders =)

Gast
2008-10-14, 22:19:23
Die wollen es nicht anders =)
Oder sie kennens nicht anders.
Ehrlich gesagt hab ich oft Mitleid mit denen. VS ist jetzt ja nicht unbedingt ne Offenbarung. Aber die Alternativen sind erschreckend. :(

Und wie machen das unsere Linux Geeks?
GDB und Valgrind?
Die Nutzen ja auch den GCC. Bei den Fehlermeldungen muss man schon abgehärtet sein. ;)

Simon
2008-10-15, 00:14:31
Die wollen es nicht anders =)
Ich will es anders. Ich kenne es anders. Was bringt mir beides, wenn es nun mal nicht anders geht? :P :mad:

Gerade hier im Programmierer-Unterforum hätt ich es etwas mehr Differenzierung erwartet... :P

Es gibt keine (kommerzielle oder OSS) IDE, die mit den Mengen an C/C++-Code hier zurecht kommt :eek: Obwohl, öffnen können die die Files, tooooooooooooll. Das kann nano/kate auch ;D
Aber wir wollen und kennen es ja nicht anders ;D :biggrin: Viele hier kommen aus der Java-Ecke mit Eclipse/Netbeans und sind dementsprechend verwöhnt.

Zum Debuggen: Gehirn, GDB und jede Menge Papier :eek: Valgrind ist für uns leider nutzlos :(
An dieser Stelle sei noch "The Practice of Programming" empfohlen ;)



Ach, was red ich überhaupt :P Eure Fitzelprogramme mit ein paar Hundert oder Tausend Zeilen Code kann ich auch blind debuggen ;D :biggrin: ;D

maximAL
2008-10-15, 00:46:36
Die wollen es nicht anders =)
erklär mal genau was "wir nicht anders wollen". welche IDEs hast du unter linux schon benutzt?

Gast
2008-10-15, 09:33:41
erklär mal genau was "wir nicht anders wollen".
Ich versteh ihn. Viele Alternativen ausprobiert und nichts was wirklich besser als VS wäre. Dabei ist VS in der Grundaustattung nicht wirklich toll. Intellisense schaltet man besten aus und nutzt nur Visual Assist. Das Buildsystem ist extrem grottig und wurde durch Scons ersetzt.
Nichtsdestotrotz entwickel ich für alle meine 5 Zielplattformen unter Visual Studio.
welche IDEs hast du unter linux schon benutzt?
Ein paar schon. Vorallem da man während des Studiums auf Linux getrimmt wurde und fast jeder mal ne Phase hat, wo man für alles von MS ne Alternative will.
Von allen alternativen IDEs konnte ich mich nur CodeWarrior einigermaßen überzeugen. Gibts auch afaik für Linux....

Ach, was red ich überhaupt Eure Fitzelprogramme mit ein paar Hundert oder Tausend Zeilen Code kann ich auch blind debuggen
Von Hand kriegt man wenigstens bei Metaprogramming keine sinnlose Fehlermeldung wie "template argument 1 is invalid".

Die Diskussion ist aber recht nutzlos, da sich die Vertreter der beiden Fronten nicht einigen können. Das ist sowas wie Linux vs Windows oder kommerziell gegen Opensource. :)
Es wurde auch nur nach Debughilfen gefragt und damit ist das ganze Offtopic.

Mein Tipp ist das ganze als Lernphase anzusehen, die garantiert nicht schadet und sich danach mal mit IDEs zu beschäftigen. Wenns einem zusagt ok, wenn nicht auch gut.

samm
2008-10-15, 10:58:36
Ein paar schon. Vorallem da man während des Studiums auf Linux getrimmt wurde und fast jeder mal ne Phase hat, wo man für alles von MS ne Alternative will.
Von allen alternativen IDEs konnte ich mich nur CodeWarrior einigermaßen überzeugen.Viele hier kommen aus der Java-Ecke mit Eclipse/Netbeans und sind dementsprechend verwöhnt.Die eigentlich für Java gebauten Netbeans und auch Eclipse können per Plugins für C++ genutzt werden. Ich mag zwar Eclipse nicht, aber Netbeans ist ganz angenehm, sowohl unter Windows wie auch unter Linux, und wohl auch OSX. Bloss diese gcc-Fehlermeldungen...;D Debuggen scheint auch zu funktionieren, k.A., welchen Debugger die beiden verwenden, da ich primitiverweise mit Debugging-Ausgaben arbeite ;)

Simon
2008-10-15, 11:07:34
Die eigentlich für Java gebauten Netbeans und auch Eclipse können per Plugins für C++ genutzt werden.
Eclipse/CDT brauchte Tage zum Indizieren für 150 MiB Code. Irgendwann hab ich es dann gekillt. Netbeans ist ähnlich. SlickEdit auch. cscope funktioniert ;D

squall23
2008-10-15, 11:28:53
Mal abgesehen von der IDE Disskusion, die zwar auch interessant ist, aber hier nicht hingehört bzw. sowieso zu keinem Ergebnis kommen wird, ist der gemeinsame Konsens, dass man eigentlich nur mit dem ganz normalen plattformspezifischen Debugger und handgestrickten Logfiles arbeitet.
Habe ich das so richtig aufgefasst?

Vor allem unter Windows sieht man ja öfter so schöne Speicher Dumps wenn sich ein Programm mal wieder erschossen hat. Ist das geziehlt ins Programm gecoded und ist das bei der Fehlersuche hilfreich?

maximAL
2008-10-15, 13:22:58
Von allen alternativen IDEs konnte ich mich nur CodeWarrior einigermaßen überzeugen.
;D
na da kann ich dir auch nicht mehr helfen.

ScottManDeath
2008-10-15, 18:49:46
Speicherdumps sind interessent wenn das Programm nicht auf Deiner Entwicklungsmachine die Hufe hoch macht, sondern beim Kunden. Windows/Dr.Watson macht dann einen kompletten Dump des Speichers des Programmes, so dass Du es dann auf Deiner Entwicklungsmaschine wiederherstellen und debuggen kannst.

Simon
2008-10-16, 10:59:03
Mal abgesehen von der IDE Disskusion
Welche Diskussion? :|
ScottManDeath und andere haben was in den Raum geworfen und drücken sich jetzt um eine genaue Antwort. Ja, das kann man auch als Diskussion bezeichnen ;D :biggrin: ;D

Gast
2008-10-16, 11:24:17
Speicherdumps sind interessent wenn das Programm nicht auf Deiner Entwicklungsmachine die Hufe hoch macht, sondern beim Kunden. Windows/Dr.Watson macht dann einen kompletten Dump des Speichers des Programmes, so dass Du es dann auf Deiner Entwicklungsmaschine wiederherstellen und debuggen kannst.Core-Files? Dachte so was gäb's nur unter Unix...

squall23
2008-10-16, 21:19:09
Welche Diskussion? :|


Die wo sich die Teilnehmenden über verschiedene IDE's beschweren. ;)

Core-Files? Dachte so was gäb's nur unter Unix...

Kannst du da etwas genauere Informationen geben? Welche Programme kommen unter Unix zum Einsatz?

eXistence
2008-10-17, 09:21:24
Kannst du da etwas genauere Informationen geben? Welche Programme kommen unter Unix zum Einsatz?

Die vom system erzeugten core files kannst du z.B. mit dem debugger laden.
So kenn ich es jedenfalls von Tru64 ("ladebug" heißt dort der debugger, ist dem gdb aber recht ähnlich)...

ob einem das wirklich hilft ist aber eine ganz andere Frage... mit einem modernen Unix/Linux hab ich das nie probiert, das mag es ja vielleicht einige Fortschritte zu nem 10 Jahre alten Unix gegeben haben... :)

Gast
2008-10-18, 21:22:21
Naja, auf jeden Fall mal Danke!

Bin zwar noch immer nicht viel schlauer als vorher, aber offensichtlich ist das kein Thema, wo es ein allgemeines Rezept gibt. Werde mich also darauf beschränken einfach Bugfreien Code zu tippen, dann gibts keine Probleme. :cool: