KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to track a change of a value using watchpoint in a Java program in Eclipse debugger. The class hierarchy is pretty complex and the value I am tracking is wrapped in container, which is used on many places. To be more specific, there is a container SizeRequirement , which has a property minimum , which I am tracking. This class is used by many layout managers on many places for many components to define requirement for component's sizes. I need to catch exact call, where the value changes/is set for one specific layout manager and one specific component in it. Is it possible to filter breakpoints by caller? I will try to explain the problem using some abstract code: class ValueContainer { public String value; } class A { private ValueContainer valueContainer; public A () { valueContainer = new ValueContainer(); valueContainer.value = "setByA"; } } class B { private ValueContainer valueContainer; public B () { valueContainer = new ValueContainer(); valueContainer.value = "setByB"; } } I set a watchpoint on value and I only want breakpoint to suspend only when the value is set by class A and ignore calls by B. To make things worse, class SizeRequirement is part of swing library and is deeply integrated in code, so I cannot use inheritance to replace it by some child on some exact place where I want to track it. EDIT So this is what I used as conditional breakpoint condition. Believe or not, it works. :) StackTraceElement[] arr = Thread.currentThread().getStackTrace(); boolean contains = false; for(StackTraceElement e : arr) { if (e.getClassName().contains("A")) { contains = true; break; } }
Tags (comma-separated)
Save Edits
Cancel