You need to use a profiling tools such as Java's hprof. It is a good introduction to profiling. While not powerful, it is a good start. There are plenty of other useful profiling tools. Just google them.
For hprof, the modes of CPU Usage Sampling Profiles (cpu=samples)
e.g. javac -J-agentlib:hprof=cpu=samples Hello.java
and CPU Usage Times Profile (cpu=times)
e.g. javac -J-agentlib:hprof=cpu=times Hello.java
sound like what you needs. They can tell you what is called and how often. What they won't tell you is the state of variables. This is what debugging is used for given that logging is not an option.