Bedingter Haltepunkt vom Aufrufer in Java Eclipse

9

Ich versuche, eine Änderung eines Werts mithilfe von Watchpoint in einem Java-Programm im Eclipse-Debugger zu verfolgen. Die Klassenhierarchie ist ziemlich komplex und der Wert, den ich verfolge, ist in einen Container eingepackt, der an vielen Stellen verwendet wird.

Um genauer zu sein, gibt es einen Container SizeRequirement , der eine Eigenschaft minimum hat, die ich tracke. Diese Klasse wird von vielen Layout-Managern an vielen Stellen für viele Komponenten verwendet, um Anforderungen für die Größe von Komponenten zu definieren. Ich muss den genauen Aufruf abfangen, wenn sich der Wert für einen bestimmten Layout-Manager und eine bestimmte Komponente darin ändert. Ist es möglich Breakpoints nach Aufrufer zu filtern? Ich werde versuchen, das Problem mit einem abstrakten Code zu erklären:

%Vor%

Ich habe einen Watchpoint auf value gesetzt und möchte nur, dass der Breakpoint nur dann aussetzt, wenn value von Klasse A gesetzt wird und Aufrufe von B ignoriert werden.

Um die Sache noch schlimmer zu machen, ist die Klasse SizeRequirement ein Teil der Swing-Bibliothek und tief im Code integriert. Daher kann ich sie nicht durch Vererbung an einem bestimmten Ort ersetzen, an dem ich sie verfolgen möchte.

BEARBEITEN

Also das habe ich als bedingte Haltepunktbedingung verwendet. Glauben oder nicht, es funktioniert. :)

%Vor%     
Radium 17.01.2013, 14:37
quelle

2 Antworten

5

Es ist ziemlich widerlich und wahrscheinlich langsam, aber Sie können

verwenden %Vor%

als Ihre Haltepunktbedingung.

Aufgrund dieses Fehlers Ссылка glaube ich nicht, dass Eclipse es direkt unterstützen wird

    
artbristol 17.01.2013, 15:02
quelle
0

Eclipse kann das tun. Erstellen Sie einen Haltepunkt, wechseln Sie in die Debug-Perspektive und in die Ansicht "Haltepunkte". Wählen Sie den Haltepunkt und

Dort können Sie "Conditional" aktivieren und "Suspend, wenn sich der Wert ändert"

auswählen

Sie müssen dann Ihren Wert in das Feld darunter eingeben, in Ihrem Fall wahrscheinlich "Minimum".

Bearbeiten:

Ich habe das gerade versucht und es hat nicht wie erwartet funktioniert, aber ich habe eine andere Lösung gefunden, die funktionieren könnte:

Datenhaltepunkte in Java / Eclipse

Zusammenfassend: Erstellen Sie in der Zeile, in der Ihr Feld definiert ist, einen Haltepunkt, der zu einem Überwachungspunkt wird. In den "Breakpoint Properties" können Sie festlegen, dass nur bei Änderung suspendiert wird (das Symbol am Rand ist ein Stift), nicht beim Zugriff (das Symbol ist eine Brille).

    
Sentry 17.01.2013 14:53
quelle