Although it may sound old fashioned - pen and paper is still a good debugging tool. Writing down what you see, what you expect.
Write down how a variable changes when you read through the code helps a lot.
You can also use one or more free pins and a LED to check paths.
Sometimes for fast signals another Arduino can be a tool of choice (read data from serial or i2C and compare it with what you expect.
What kind of application are you trying to debug?
Can you post the code?
As I don't want to duplicate posts, I put the code in this thread http://arduino.cc/forum/index.php/topic,144778.0.html
Thanks for your reply.