Hallo zusammen,
es ist mir regelrecht peinlich, es zuzugeben, aber ich habe jetzt
jahrelang programmiert, ohne einen Debugger benutzt zu haben, meist
mithilfe von Ausgaben an die Konsole.
Aber: Peinliche Zustände müssen ja nicht für ewig anhalten. Also: Kann
mir jemand gute Einführungsliteratur zum Thema "Debugger" empfehlen?
Viele Grüße
Nicolas
Da jeder Debugger etwas anders bedient wird, solltest du auf jeden Fall
das mitgelieferte Handbuch lesen. Da die Verwendung eines Debuggers
keiner hohe Theorie bedarf, glaube ich nicht, dass du noch zusätzliche
Allgemeinliteratur brauchst.
Ich muss zugeben, dass ich noch nicht einmal die Anleitungen der von mir
verwendeten Debugger vollständig gelesen habe. Ausprobieren und die
meist sehr knapp gehaltene Online-Hilfe haben gereicht.
Hi,
du musst nur mal nen Debugger starten, dann siehst du recht schnell, wie
der funktioniert.
Ich hab für µVision oder Visual Studio auch noch nie ein Handbuch
gelesen :-)
Im Grunde heisst debuggen:
- Breakpoints setzen (Address oder Data)
- Steppen (in, out, over function)
- Variablen (bei embedded noch Register) -werte ansehen und verändern
- Speicherbereiche und Strukturen ansehen, ggf. Werte ändern
Dazu kommen dann noch Spezialitäten, die der Debugger so unterstützt.
Aber das ist das grundlegende Handwerkszeug, was ca. 90% der Debug-Zeit
benötigt wird.
Das schöne z.B. am Visual Studio ist, dass du nach einem erreichten BP
den Code ändern kannst (lokale Änderungen in der Funktion), und dann
wird bei Go oder Step der Code neu compiliert und du kannst
weiterdebuggen, ohne die laufende Session beendet zu haben.
VG,
/th.
Wichtiger als die Bedienung des Debugtools ist die tiefgehende
Kenntnis der Einsatzbedingungen des zu debuggenden Programms.
Betriebssystem, Bibliotheken, Eigenarten und Fallstricke der Sprache und
des Compilers. Der technische Vorgang des Debugging ist dann wirklich
nicht mehr das Problem.
Hallo'!
Random ... schrieb:> Dazu kommen dann noch Spezialitäten, die der Debugger so unterstützt.
Gerade die Spezialitäten können Dir das Leben doch deutlich
vereinfachen. Mal für das Visual Studio gesprochen: Das Wissen um
Pseudoregister und das Formatieren des Outputs brauche ich in allen
meinen Projekten. Z.B. habe ich die beiden Einträge
@EAX,hr
@ERR,hr
in nahezu allen Projekten im Watchwindow stehen. Und das Breakpoints
deutlich mehr als der schlichte Druck auf F9 sein können, hat mir auch
schon oft geholfen. Und so ganz uninteressant ist die autoexp.dat nun
auch nicht, nur kennt die kaum einer.
Falls hier also tatsächlich ein Visual Studio im Spiel sein sollte, kann
ich "Debugging Applications" von John Robbins empfehlen. Die Auflage von
2000 ist zwar nicht die Neueste, hat aber nur wenig an Aktualität
verloren und gibt es bei Amazon auch in gebraucht.
Und ja, ich habe tatsächlich ein Buch übers Debuggen gelesen. :-)
Wenn man sich auf Windows beschränkt, könnte auch interessant sein:
Advanced Windows Debugging: Developing and Administering Reliable,
Robust, and Secure Software (Addison-Wesley Microsoft Technology)
Das kommt drauf an. Alles, was oben schon geschrieben wurde kommt hin.
Nur: Wäre schöner gewesen, System, Plattform, Programmiersprache und ob
Texte auch englisch sein dürfen zu wissen.
Beim gdb sind debuggingsitzungen in debugging tutorials zum gdb recht
hilfreich.
Bedienung auf jeden Fall lernen und üben. Ein bißchen Assembler lernen
kann nicht schaden - sofern kein High-Level-Debugger. Keine Angst,
normalerweise kann man Asm Grundlagen sehr schnell lernen und behalten.
Problematischer sind entsprechende Codeschnipsel bei bestimmten
Plattformen und Programmen.
http://www.amazon.de/Hacking-Die-Kunst-Exploits-mit/dp/3898645363/
Hallo zusammen,
danke für die Antworten. Ich habe meine Frage bewußt allgemein gehalten,
um allgemeine Antworten zu bekommen.
Das liegt daran, daß ich es momentan für an der Zeit halte, mal wieder
die Programmiersprache für den PC zu wechseln - und noch nicht weiß,
welche es werden soll. Deswegen wollte ich die Wahl auch von den
Debug-Möglichkeiten abhängig machen- wenn ich denn wüßte, worauf man
achten sollte. Breakpoints und Step-In scheinen allgemein verbreitet zu
sein - aber ist das alles?
Deswegen halte ich es für angebracht, mich über Debugging (von Software
- das fabelhafte Buch "Debugging" von David J. Agans kenne ich -) schlau
zu machen.
Deutsch oder Englisch ist nachrangig- ersteres geht am späteren Abend
etwas zügiger zu lesen, bei letzterem kennt man die Begriffe dafür meist
schon besser, weil man sie in unzähligen Hilfetexten und Dokus schon
gesehen hat.
Viele Grüße
Nicolas
Nicolas S. schrieb:> danke für die Antworten. Ich habe meine Frage bewußt allgemein gehalten,> um allgemeine Antworten zu bekommen.>> Das liegt daran, daß ich es momentan für an der Zeit halte, mal wieder> die Programmiersprache für den PC zu wechseln - und noch nicht weiß,> welche es werden soll.
Wenn du noch nicht einmal weißt, welche Programmiersprache du verwenden
willst, ist deine Anfrage allerdings sehr allgemein :)
Geh mal davon aus, dass das Debugging in C, Prolog und Haskell (nur um
ein paar Beispiele zu nennen) dreimal völlig unterschiedlich abläuft.
Single-Step und dergleichen wirst du bei den letzten beiden (zumindest
in der üblichen Form) vergeblich suchen.
Wenn du noch ncht weist welche Sprache und Umgebung, sondern wirklich
Big Picture willst kann dieses Buch vielleicht was für dich sein
http://www.amazon.de/Debug-It-Prevent-Pragmatic-Programmers/dp/193435628X/ref=sr_1_1?ie=UTF8&qid=1341472495&sr=8-1
Hierbei geht es nicht um das Praktische debuggen, sondern der Autor
versucht Methoden und Konzepte vorzustellen um sich einen Problem zu
näheren.
Ich denke jemand der schon viel Erfahrung mit denn Entwicklen hat wird
nichts hierdirn als neu und Inovertiv empfinden, aber mir hat es
geholfen, sich den Debugggen systematisch zu näheren.