Is there a way to output a call trace for a particular thread in java?
I do not want a stack trace. I would like a sequence of calls on each object for tracing.
If you want to trace the execution of your Java code you can use a tool called InTrace.
NOTE: InTrace is a free and open source tool which I have written.
Runtime.traceMethodCalls()
, which prints a line for each method call of all objects in all threads
There is btrace, that can be used for this kind of action.
The more easier way than Btrace is using HouseMD, you can get the from here
I think you might find this interesting. It is a java agent which adds entry and exit logging to methods, using the slf4j framework to actually log the output. Then it is a matter of configuring the logging framework to only print out that thread you are interested in.
http://www.slf4j.org/extensions.html#javaagent
(just to be explicit: 1) I wrote it, 2) it works for me :) )
We could create a new Throwable object which will have the call trace. And using some string manipulations, we can get the call stack.
Throwable t = new Throwable();
System.out.println(t.getStackTrace()[1].toString());
I'm not sure retrieving the info this way , is a good practice or not. :)