Hat tatsächlich jemand einen reversiblen Debugger benutzt? Das einzige Produkt, das Google auftaucht, ist UndoDB. Es ist anscheinend nur für Linux.Bidirektionales (oder umgekehrtes) Debugging
Antwort
Die neueste GDB Version 7.0 (veröffentlicht in dieser Woche) unterstützt Reverse Debugging auf einer Reihe von Plattformen (zB nativen i386 und x86_64 Linux, VMware Workstation, UndoDB und Simics Simulatoren von Virtutech). ftp://ftp.gnu.org/pub/gdb
Es funktioniert mit der neuesten Vorschau/Vorabversion von VMware Workstation 7.0, die auch die umgekehrte Debugging von MSWindows Gäste mit Visual Studio-Debugger unterstützt. Erhalten Sie eine kostenlose Testversion zum Download von Workstation 7.0 auf http://communities.vmware.com/community/beta/workstation und finden Sie einige hilfreiche Tipps zur Verwendung hier bei http://communities.vmware.com/docs/DOC-10714
Das Wort, nach dem Sie suchen, kann "Omniscient Debugging" sein.
Hier ist eine: http://www.lambdacs.com/debugger/
Die UndoDB Seite hat einige Links zu (teuren) kommerziellen Debugger.
VS 2010 soll so etwas haben, denke ich.
Sie können VMware Replay Debugging verwenden, das in der neuesten Version von VMware Workstation, z. siehe http://www.replaydebugging.com/2008/08/vmware-workstation-65-reverse-and.html. Sie können eine Testversion unter http://www.vmware.com/products/ws/ herunterladen und es funktioniert mit Visual Studio.
(Haftungsausschluss:. I für VMware arbeitet auf diesem Produkt, wenn auch nicht).
Die neu veröffentlichten GDB-7.0 enthält Reverse Debugging-Funktionalität für native Linux x86 und x86_64. Sie können jedes Linux-Programm wie gewohnt debuggen, die "Aufnahme" -Funktion aktivieren, und von diesem Punkt an können Sie, wenn Sie zu weit vorrücken, rückwärts oder rückwärts zu einem Haltepunkt gehen.
Ja, ich habe es in den 90ern benutzt ... Der Watcom C Debugger (verstanden in FORTRAN und den meisten anderen Sprachen) hatte die Option, Sie rechtzeitig vor und zurück zu lassen.
Es ist großartig, aber keine große neue Sache ...
Ja, ich habe seit 2005 Virtutech Simics mit Reverse verwendet Es ist unglaublich nützlich, und hat die meisten Fehler sehr einfach zu beheben machen. Insbesondere solche, die sich auf Timing- und Race-Bedingungen beziehen, und Multicore/Thread "Heisenbugs".
Siehe http://jakob.engbloms.se/archives/1547, http://jakob.engbloms.se/archives/1554 und http://jakob.engbloms.se/archives/1564 Bestandsaufnahme der meisten bekannten Reverse-Debugger-Versuche bis heute.
Als amüsante historische Notiz, implementiert EXDAMS in den späten 60er Jahren ein Post-Mortem-Reverse-Debugging für MULTICS.
Obwohl diese Frage alt ist, bleibt reverse-debugging ein interessantes Thema, also dachte ich, ich würde eine aktualisierte Antwort posten. Meine These, Combining reverse debugging and live programming towards visual thinking in computer programming deckt einige der historischen Ansätze und erklärt den Unterschied zwischen allwissend Debuggen und wahr Reverse Debugging:
Der Computer, das Programm bis zu einem gewissen Punkt voraus ausgeführt hat, sollte wirklich in der Lage sein zu liefern uns mit Informationen darüber. Eine solche Verbesserung ist möglich und findet sich in so genannten allwissenden Debuggern.Sie werden normalerweise als Rückwärts-Debugger klassifiziert, obwohl sie genauer als "History Logging" -Debugger beschrieben werden können, da sie während der Ausführung lediglich Informationen zur späteren Ansicht oder Abfrage aufzeichnen, anstatt es dem Programmierer zu erlauben, in einem ausgeführten Programm tatsächlich rückwärts zu springen . "Allwissend" kommt daher, dass die gesamte Zustandsgeschichte des Programms, nachdem sie aufgezeichnet wurde, dem Debugger nach der Ausführung zur Verfügung steht. Es besteht dann keine Notwendigkeit, das Programm erneut auszuführen, und es ist keine manuelle Code-Instrumentierung erforderlich.
Software-basierte allwissende Debugging begann mit dem 1969 EXDAMS-System, wo es "Debug-Zeitverlauf-Wiedergabe" genannt wurde. Der GNU-Debugger GDB unterstützt seit 2009 das allwissende Debugging mit der Funktion "Prozessaufzeichnung und -wiedergabe". TotalView, UndoDB und Chronon scheinen die derzeit besten verfügbaren, allgegenwärtigen Debugger zu sein, sind aber kommerzielle Systeme. TOD, für Java, scheint die beste Open-Source-Alternative zu sein, die partielle deterministische Wiedergabe sowie partielle Trace-Erfassung und eine verteilte Datenbank nutzt, um die Aufzeichnung der großen Menge an involvierten Informationen zu ermöglichen.
Es gibt auch Debugger, die nicht nur die Navigation einer Aufzeichnung erlauben, sondern tatsächlich in der Ausführungszeit rückwärts laufen können. Sie können genauer als Back-in-Time-, Time-Travel-, bidirektionale oder reverse Debugger beschrieben werden.
Das erste System war die 1981 Prototyp COPE ...
Mein Das Problem mit gdb ist, dass Rückwärts-Debugging für Multithread-Anwendungen nicht möglich ist. Ein Nichtstarter hier. – casualcoder
@casualcoder, ich weiß nicht gdb gut, aber es sieht aus wie es erlaubt, siehe [die Antwort hier] (http://stackoverflow.com/questions/7517236/how-doenable-reverse- debugging-on-a-multi-threaded-programm) – Abraham
Nun, nur vor 4 Jahren gepostet. Multithread-Apps werden unterstützt! – casualcoder
ich UndoDB auf Linux anstelle von einfachen GDB für jede Debug-Sitzung verwenden. Umgekehrtes Debuggen ist sehr nützlich und beschleunigt das Debugging erheblich. Sie können das Debuggen mit dem Symptom des Problems (z. B. fehlgeschlagene Assertion oder das Drucken einer falschen Nachricht) starten und rechtzeitig nach Fehlern suchen, indem Sie nach der Ursache des Problems suchen.
Gdb hat seit einigen Jahren 'Prozessaufzeichnung' für das Rückwärts-Debugging. Es gibt nur ein Problem in der letzten Debian/Ubuntu/glibc mit den letzten AVX2-fähigen CPUs, dass glibc immer AVX2 für String-Operationen verwenden will und gdb process record keine Emulation von vex-prefixed Kommandos unterstützt. Es gibt meinen kludigen 1-Bit-Binär-Patch, um die Verwendung von AVX2 in ld.so zu deaktivieren: https://stackoverflow.com/questions/43750603/gdb-reverse-debugging-avx2/44468782#44468782 https://stackoverflow.com/questions/ 42451492/disable-avx-optimierte-Funktionen-in-glibc-ld-hwcap-Maske-etc-ld-so-nohwcap-for/44468494 # 44468494 – osgx
Vielen Dank und Ihre Firma für Kerne und Werkzeuge, und herzlich willkommen auf der Website! Und für Wikipedia-Beiträge auch. – osgx
Haben wir den Kreis geschlossen? Die Frage wurde mit Erwähnung von UndoDB geöffnet. Eine Beschwerde über das Debuggen in umgekehrter Reihenfolge in gdb ist, dass das Verlaufsprotokoll ziemlich kurz ist. Einer wird von Eingabeaufforderungen belästigt, um die Protokollierung neu zu starten. Werde die neueste gdb ausprobieren müssen, die Dinge könnten sich geändert haben. Hoffnungsvoll. – casualcoder
Abstimmung zum Schließen als Werkzeug rec oder unklar. Siehe auch: http://stackoverflow.com/questions/1545474/anyone-tried-reverse-debugging-in-gdb, http://stackoverflow.com/questions/1470434/how-does-reverse-debugging-work –