Neatbeans Debug, track changes to a variable

I want to see a varaible change.  I right click and say 'add to watch' and only shows the current state it does not track its history of change?  Is there a debug tool that can do this and can work with NetBeans?
RichardSDetschAsked:
Who is Participating?
 
rockiroadsConnect With a Mentor Commented:
add the logging in setTrackVar

public setTrackVar(double d) {
    LOG LINE HERE
    trackVar =d
}

if you are sure your constructor is setting it a value (which I assume is non zero) then something must be calling it. Tracing helps but you could put a breakpoint on the line trackVar = d then run your code in debug. Once it stops at that breakpoint you can check out the stack to see where it was called from
0
 
rockiroadsCommented:
I have never come across a tool like that since the watch is usually to monitor the variable as you are stepping through code

why dont you try this, in the setter of that variable (assuming its a class variable), why dont you log the value being passed in.

0
 
rockiroadsCommented:
in case you are not familiar with the logger in Java like log4j. you do not have to worry about removing logging code then when app goes live.
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
RichardSDetschAuthor Commented:
icecream flavs:
The variable is a private data member of a class of type double and my constructor sets it, but somehow by the time it gets to the classes toString method it gets changed to 0.0.   I am unfamiliar with this operation.   So if my class is below what would I do to log the value as being passed in its setter?

public class Class{
   private double trackVar;

   public Class(double trackVar){}

    public String toString(){print trackVar}

    public setTrackVar(double d){trackVar =d}
}

0
 
RichardSDetschAuthor Commented:
I am very new to this.  I will try this when I go to work tomorrow.  Thanks so much.
0
 
rockiroadsCommented:
No problems.

If you dont want logging at this stage, just dump it using

System.out.println("Passed in value is " + d);

0
 
rockiroadsCommented:
if u got time, have a look at log4j. http://www.vipan.com/htdocs/log4jhelp.html
0
 
__geof__Commented:
Can we get a look on your constructor and how it is called. It may be conversion problems i.e. if you try to set an int somewhere it won't do (like double = int/int doesn't work)
0
 
gordon_vt02Connect With a Mentor Commented:
Check your constructor and make sure you are setting this.trackVar and not just trackVar.  The 0.0 value is the default for doubles so it sounds like it isn't actually getting set in your constructor.
public Constructor(double trackVar) {
    // BAD -- Sets trackVar parameter, not class attribute
    trackVar = trackVar;

    // GOOD -- Sets trackVar class attribute to value of parameter
    this.trackVar = trackVar;
}

Open in new window

0
 
RichardSDetschAuthor Commented:
These solutions are good practive.  Where you have a private variable that can only be acesses by setter functions.  But they do not track who called the setter and when.  
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.