The listener CallMonitor of JPF prints for each method that is called - the ID of the thread that executed the call, - the depth of the stack, - the name of the class, - the name of the method, and - its arguments. Consider the following app. public class Example { public static void main(String [] args) { first(1, true); } private static void first(int i, boolean b) { second(i + 1); } private static void second(int i) { System.out.println(i); } } If we run JPF with the following application configuration file target=Example classpath= listener=gov.nasa.jpf.listener.CallMonitor then JPF produces output similar to the following. JavaPathfinder core system v8.0 (rev d772dfa80ea692f916aa6718d04c4f7bfb2a746b) - (C) 2005-2014 United States Government. All rights reserved. ====================================================== system under test Example.main() ====================================================== search started: 2/22/19 4:57 PM 2 ====================================================== method invocations 0: java.lang.Boolean.() ... 0: Example.main([Ljava.lang.String;@bb) 0: Example.first(1,true) 0: Example.second(2) 0: gov.nasa.jpf.ConsoleOutputStream.println(2) ====================================================== results no errors detected ====================================================== statistics elapsed time: 00:00:00 states: new=1,visited=0,backtracked=1,end=1 search: maxDepth=1,constraints=0 choice generators: thread=1 (signal=0,lock=1,sharedRef=0,threadApi=0,reschedule=0), data=0 heap: new=350,released=11,maxLive=0,gcCycles=1 instructions: 3184 max memory: 57MB loaded code: classes=61,methods=1331 ====================================================== search finished: 2/22/19 4:57 PM As can be seen from the above output, all method invocations are executed by the main thread which has ID 0. The number of spaces following "0: " represents the stack depth. JPF executes many method invocations before it reaches the main method.