Frage

Manchmal akkumulieren ich eine große Masse von Haltepunkten aus verschiedenen Debug-Sessions an verschiedenen Orten in meinem Code. Wie erkennt der Debugger effizient, wenn für einen Haltepunkt zu stoppen? Es kann unmöglich bei jeder einzelnen Zeile werden Anhalten der Zeilennummer und Quelldateinamen gegen eine möglicherweise lange Liste der Haltepunkte zu überprüfen, kann es?

Dies ist die Java-Debugger in Eclipse, aber ich nehme an der Frage zu jedem Debugger gilt.

War es hilfreich?

Lösung

Die Strategie in vielen Debugger verwendet (ich weiß nicht, über Eclipse) ist an der Stelle des Unterbrechungs einen Patch in den Code zu setzen, die im wesentlichen ein Unterprogrammaufruf oder Systemaufruf ist. Der Code gesprungen, um die Breakpoint Informationen hat, und tut, was Druck oder die Annahme von Benutzerbefehlen, und hat auch den Code, der mit dem Patch überschrieben wurde, so dass Code der Ausführung des ursprünglichen Code Übereinstimmen machen ausgeführt werden, ohne dass der Haltepunkt

Andere Tipps

Hinzufügen zu Nadreck gute Antwort:

Es ist ein Artikel hier mit mehr Details, darunter einige der exotischere Sachen (spezifische Opcodes auf x86;. Hardware Breakpoints)

Debuggers implementieren Stützpunkte in Hardware oder Software. Letzteres erfordert die ursprüngliche Anweisung zu speichern, spezielle Code eingefügt, der eine Ausnahme erzeugt, und wenn die Ausnahme ausgelöst wird, die ursprüngliche Anweisung wieder einsetzen und läßt die Benutzer wissen, dass der Haltepunkt erreicht wurde. Lesen Sie meinen Artikel für die blutigen Details über Software-Breakpoints.

Sie können die vollständigen Informationen über die Interna von Eclipse Debugger erhalten und wie man auf dem Link unten schreiben Wie ein Eclipse-Debugger

schreiben
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top