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#
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