!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|Engineering] 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:

[{Image src='Eclipse/stack no filter.jpg'}]

In den Eclipse-Preferences kann das Step Filtering konfiguriert werden:

[{Image src='Eclipse Stackfilter Plugin/preferences step filtering.jpg'}]

Das Step-Filter filtert nun den Stack-Trace mit den in den Preferences eingestellten Step-Filters:

[{Image src='Eclipse/stack with filter.jpg'}]

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)|Eclipse/org.eclipse.jdt.debug.ui_3.2.102.200902181026.jar]
* [org.eclipse.jdt.debug.ui für Eclipse 3.4 (Ganymede)|Eclipse/org.eclipse.jdt.debug.ui_3.3.0.v20080603.jar]
* [org.eclipse.jdt.debug.ui für Eclipse 3.4.1 (Ganymede)|Eclipse/org.eclipse.jdt.debug.ui_3.3.1.v20080730_r341.jar]

!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