Here are some debugging techniques which will be help full for java buddies.
1st the basic one putting system outs. This is not a good practice but if you don’t have any other way to check it then this might be the only option. But the most important thing is make sure to remove these system outs in the production code.
2nd instead of system outs you can use a logging tool like log4J. Using its functionalities you can put debug level logs and check the logging files. Here if you use good pattern for logging you can find all most all information you want to know. Like Class, line number, time and others.
3rd debug using the IDE. This will help to identify how the code works for each different scenario which you can do with your system. There are lots of features available to understand the behavior of the code. But some times you might have a problem if you are dealing with a multi-thread application. Because if different thread access you debugging point; you might be disconnected or mislead by it. So in those cases 2nd approach will be helpful. You can find more information related to this in your favorite IDE related documents.
4th Remote deguging. This is like 3rd but you can debug and application running remotely. For this what you have to do is enable debugging on the remote application. To enable this you have to pass Parameters to JVM saing which port is available to remote access. After you enable it what you have to do is connect to remote port using local code base and debug it.