Eclipse watch expresion

So, now that I’m working for the dark side: did you know Eclipse had watch expressions which shows a variable’s value on real time? I bet you did, gdb has that too. Did you know a watch expression can evaluate a method call too? Neat, huh? Well, gdb has that too.

Anyway, someone on the team was having weird issues. A switch would jump to unexpected places. The state of an object would change between method calls. WTF?

After some debugging then it downed on me: I once (a long time before this strange behavior) saw this person using watch expressions to evaluate a method’s return value. You now have enough information to troubleshoot this problem.

Ready? It’s easy. A watch expression of a method call has the ability to alter an object’s status. So, if you have something like this:

class Foo {
   int a;
   Foo() : a(0) {}
   void sumar(){ a++; }

int main() {
   Foo bar;
   /* do something */
   return 42;

and then add a watch expression over bar.sumar(), then bar.a’s value will be undefined for the execution of this program. Nice!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s