Debug, modify, reload, eclipse?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Zum Debuggen würde ich gerne einen Teil des Codes ausführen und dann an einem mittleren Teil rumtesten. Also ändern, reloaden, neu starten ohne den vorhergehenden Teil auszuführen. Idealerweise möchte ich das im Debug Modus testen (also mit schrittweisem durchgehen und Variableninspektion) und während dem Debuggen halt mal Teile ändern und den mittleren Teil neu ausführen. Geht das irgendwie?
Am besten wäre, wenn es in Eclipse funktioniert. Oder geht es wenigstens mit pdb?

Und kann man denn Klassen reloaden von denen man schon Objekte erzeugt hat?
BlackJack

@Gerenuk: Ich würde sagen das geht nicht. Wenn Du so etwas machen möchtest, solltest Du auf Smalltalk umsteigen. :-)
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Na Befehle ausführen und reloaden geht ja schonmal.
Und ich bin mir sicher man könnte irgendwas mit pdb zusammenhacken. In Python kann man ja in alles eingreifen.
Nur was ist der praktischste und einfachste Weg?
BlackJack

@Gerenuk: Das normale `reload()` bezieht sich aber nur auf ein Modul. Nicht einmal ein rekursives Reload von den Modulen, die das Modul verwendet. Und es hat auch keinen Einfluss auf bereits bestehende Objekte.

Der praktischste Weg ist es einfach gar nicht zu machen. Und das eigene Programm so zu schreiben, dass es einfach und automatisiert testbar ist. Dann braucht man auch keinen schrittweisen Debugger. `pdb` & Co wird von Pythonistas eher weniger bis gar nicht eingesetzt.

Einzelschritt-Fehlersuche kenne ich noch aus Sprachen, wo man sehr viel "drumherum" selbst machen musste, wie Indizes aktualisieren, Speicher verwalten und so weiter. Also alles Sachen die man in Python vermeidet, weil man seine Programme auf einem viel höheren Abstraktionsniveau ausdrücken kann. Für mich hat sich der Sinn von Einzelschrittausführung damit zumindest weitestgehend erledigt.

Ausser natürlich bei einem System wie Smalltalk, wo man im Debugger tatsächlich das Programm weiterentwickeln kann. :-)
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

@Gerenuk:
Wenn's nur darum geht die Änderungen zu sehen, tut's doch auch ein Break-Point:

Code: Alles auswählen

import pdb; pdb.set_trace()
Soll heißen: Anwendung neu starten, und bis zum Break-Point laufen lassen.
Evtl. geht das mit Eclipse auch noch anders - ich benutze Ecplise nicht für Python.
Gerenuk
User
Beiträge: 69
Registriert: Donnerstag 21. Januar 2010, 22:27

Also das Grundproblem ist, dass da ein Datenladeschritt sehr lange dauert. Und den immer wieder auszuführen würde ich gerne vermeiden. Und Eclipse mag pdb nicht wirklich, wenn es eigentlich selbst debuggen will :(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Ausser natürlich bei einem System wie Smalltalk, wo man im Debugger tatsächlich das Programm weiterentwickeln kann. :-)
Generell in Imagebasierten Systemen wie Smalltalk, Common Lisp oder Factor. Aber es gibt keine Python-Implementation die Imagebasiert wäre und ich habe auch von keinen Plänen gehört so etwas zu implementieren. Wäre aber sicher ne ziemlich schicke Sache :) Vielleicht kommt mal aus der PyPy-Ecke dazu was.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@Gerenuk: Dann solltest Du den Datenladeschritt verkürzen, mit Testdaten arbeiten, oder gar mit Mock-Objekten.
Noah
User
Beiträge: 15
Registriert: Montag 17. Januar 2011, 08:20

Leonidas hat geschrieben:Generell in Imagebasierten Systemen wie Smalltalk, Common Lisp oder Factor.
Nicht zu vergessen Visual Basic. ;-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Noah hat geschrieben:Nicht zu vergessen Visual Basic. ;-)
Das hat mich etwas aus der Fassung gebracht, denn ich habe es seinerzeit mal benutzt, aber imagebasiert scheint es mir nicht gewesen zu sein. Hast du da Belege dafür (ehrliche Frage, war schon lange her und damals hatte ich nicht so viel Ahnung)?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

@Leonidas
MS nennt das "Edit and Continue", ein Feature vom Visual studio, wird für mehrere Sprachen angeboten
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Naja, das editieren geht auch ganz gut, aber das mit dem fortfahren ist im Visual Studio (9.x) so eine Sache...
Ich denke das unterscheidet sich schon ziemlich von dem was Leonidas meint.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten