Schrittweises debugging und variablenwertverfolgung[geloest]



  • Hallo,

    irgendwie funktioniert ein Programm nicht wie es soll, es kommen ganz unerwartete Werte heraus. Gern würde ich nun ein Step by Step Debugging durchführen, wobei ich auch gern sehen würde, welche Variablenwerte sich bei welchewm Schritt ändern. In Visual Studio geht das hervorragend, in KDevelop bin ich von den Möglichkeiten des gdb bislang sehr enttäuscht.
    Gibt es das, was ich gern hätte (also einen Debugger, der mir änderungen in den VAriablenwerten anzeigt und dabei an die entsprechenden Codezeilen springt) auch irgendwie unter Linux?



  • Der gdb kann das alles 😉

    Gute Erfahrungen habe ich mit dem ddd gemacht, der neben ziemlich guter Datenvisualisierung auch eine Kommandozeileneingabe mitbringt, über die man dem gdb im Zweifel direkt Befehle geben kann.

    Das was Du meinst sind wenn ich Dich richtig verstehe Watchpoints oder bedingte Breakpoints. Um ersteres zu setzen, lässt Du das Programm an eine Stelle laufen an der Du Dir den Variableninhalt anzeigen lassen kannst, und gibst den Befehl "watch name" - wenn Du dann weiterlaufen lässt hält das Programm dort an wo sich "name" ändert.

    Bedingte Breakpoints gehen ähnlich - zuerst setzt Du einen Breakpoint auf die gewünschte Stelle, dann bekommst Du vom gdb eine Breakpointnummer. Dann "cond nummer bedingung", und er hält nur noch an wenn an diesem Punkt die Bedingung erfüllt ist.

    Du siehst, im Grunde kommt es darauf an wie gut das Frontend ist, welches den gdb bedient...



  • Das sollte an sich aber KDevelop auch alles können. Vielleicht erbarmt sich ja ein KDevelop-User hier und erklärt Dir das. 🙂



  • Irgendwie geht das sicherlich. DDD habe ich installiert, da komm ich nicht wirklich mit zurecht, sehr gewöhnungsbedürftig, aber vielleicht hilft's.
    In KDevelop muss man den gdb installieren, um Debuggen zu können, leider scheint der nur eine ganz basale Funktionalität zu bieten. Ich sehe, in welcher Methode ein Fehler auftritt...ein bisschen präziser wäre vielleicht ganz nett.
    Breakpoints- es gibt da ein Menu, da kann man irgendwas einstellen, was nirgends erklärt wird. Ich stelle alles mögliche ein, nichts passiert....

    Gibt es vielleicht auch eine kommerzielle IDE für C++ unter Linux?



  • Natürlich kannst Du auch schrittweise Debuggen und Variablen überwachen in KDevelop. Gibt eine Debugger-Symbolleiste und ein "Variablen"-Fenster (musst Du evtl erst einblenden) bei dem Du x-beliebige Variablen hinzufügen kannst.



  • Physikalischer Fehler schrieb:

    Breakpoints- es gibt da ein Menu, da kann man irgendwas einstellen, was nirgends erklärt wird. Ich stelle alles mögliche ein, nichts passiert....

    An sich sollte das alles selbsterklärend sein. Du setzt zuerst Breakpoints, dann gehst Du auf Debug/Start und dann springst Du wohin Du möchtest, beobachtest bei Bedarf währenddessen Variablen etc.



  • Ja, die gibt es, sogar zweifach (?). Ich sehe auch die Optionen zum schrittweisen Debuggen, nur sind die ausgegraut. Setze ich Breakpoints in den Code, erscheint im gdb outbut lediglich

    (gdb) break Gameboard.cpp:181
    No source file named Gameboard.cpp.

    Nee, is logisch, denn das Programm, dessen Sourcecode in der angeblich nincht existenten Datei steht, wird ja dann ausgeführt....in der Variablenverfolgung sehe ich währenddessen nichts, ausser dem Name der Variablen, die ich ja verfolgen wollte.

    Wenn ich irgendwie einzelschrittweise das Programm ausführen könnte, wäre ich ja schon einen riesen Schritt weiter.



  • Für alle, die ähnliche Probleme haben:

    Zu allererst muss das Programm mit der Kompileroption -g übersetzt werden (erzeugt zusatzinfo fuer debug). Dann kann man das auf diese weise übersetzte Programm mit dem Debugger seiner wahl untersuchen (ddd, kdbg, ddb- je nach dem ob man auf kde oder mehr auf Kommandozeile steht) und hat alle Optionen, wie z.B.Prozedurschritte, Variablenverfolgung usf.

    DDD und kdbg sind intuitiv zu bedienen, kdbg kommt etwas moderner daher, ddd ist dafür umfangreicher.

    😃


Anmelden zum Antworten