Herausforderung#
Die Stack-Traces im Debug-View werden immer länger. Zwischen dem nützlichen Code befinden sich fremde Klassen, die für die momentane Entwicklung unnötig sind. Durch die Möglichkeit zur Laufzeitgenerierung von Bytecode kommen störende Interceptor-Aufrufe hinzu. Die nützliche Information, meist der eigene Code, wird mühsam zwischen den Zeilen gesucht. Eclipse bietet zwar die Möglichkeit zum Step-Filtering, also zum Überspringen von uninteressantem Code beim Stepping. Der Stack-Trace zeigt jedoch nach wie vor die uninteressanten Stack-Frames an. Die Übersichtlichkeit, sowie die Möglichkeit durch Mausklicks im Stack-Trace zu navigieren ist dadurch erheblich eingeschränkt.Lösung#
Die Intersult hat das Debug-Filter-Plugin entwickelt. Dies filtert nun auch den Stack-Trace im Debug-View mittels der eingestellten Filter. Die Preferences sind über die Preferences (Step Filter) oder durch das Kontextmenü im Stacktrace erreichbar. Die Filterung wird ein- und ausgeschaltet mit dem Knopf für das Step-Filtering.Beispiel#
Der folgende Code zeigt eine Klasse, die das Interface Comparable implementiert, sowie eine Methode main um eine Sortierung von Instanzen dieser Klassen vorzunehmen:public class StackTest { public static class Sub implements Comparable<Sub> { private String string; public Sub(String string) { super(); this.string = string; } public String getString() { return string; } public void setString(String string) { this.string = string; } @Override public int compareTo(Sub sub) { return string.compareTo(sub.string); } } public static void main(String[] args) { Object[] objects = new Sub[] { new Sub("Eins"), new Sub("Zwei") }; Arrays.sort(objects); } }
Dieses Beispiel wurde gewählt, da beim Sortieren eines Array Klassen aus java.util.* durchlaufen werden:
Das Step-Filter filtert nun den Stack-Trace mit den in den Preferences eingestellten Step-Filters:
Nach dem Einschalten des Step-Filters und erneuten catchen am Breakpoint sind die beiden Aufrufe "java.util.Array.sort(java.lang.Object) line: 1080" und "java.util.Arrays.mergeSort(java.lang.Object, java.lang.Object,int, int, int) line: 1156" verschwunden. Das Package java.util.* ist in der Grundeinstellung von Eclipse bereits als Step-Filter definiert.
Downloads#
- org.eclipse.jdt.debug.ui für Eclipse 3.3 (Europa)
- org.eclipse.jdt.debug.ui für Eclipse 3.4 (Ganymede)
- org.eclipse.jdt.debug.ui für Eclipse 3.4.1 (Ganymede)
Installation#
Das von Eclipse mitgelieferte Plugin braucht nur ersetzt das hier erhältliche ersetzt werden:- Passende Plugin-Datei herunterladen
- Eclipse beenden
- Plugin im Verzeichnis /eclipse/plugins/org.eclipse.jdt.debug.ui... löschen
- Heruntergeladenes Plugin an die Stelle ablegen
- Eclipse neu starten