I've been using ddd with some success. What I did was set up two console stations. One station is for the supervisor and one is for a worker. Running just two nodes for a given problem, it is possible to track what the supervisor is doing at the same time as a worker. It is really neat for debugging problems of light to medium difficulty. An issue with ddd is that it does not seem capable of displaying variable values when the variable is defined at a higher level of scope. For instance, If one is in method M of class C and variable V is defined at the class level, then at breakpoint B within method M one can not get the value of variable V. That has been my experience.