1 20 package gov.nasa.jpf.embedded; 21 22 import gov.nasa.jpf.Config; 23 import gov.nasa.jpf.VMListener; 24 import gov.nasa.jpf.VM; 25 import gov.nasa.jpf.JPF; 26 import gov.nasa.jpf.jvm.JVM; 27 import gov.nasa.jpf.jvm.ThreadInfo; 28 import gov.nasa.jpf.jvm.ElementInfo; 29 30 31 34 public class TestVMListener implements VMListener { 35 36 41 public void instructionExecuted(VM vm) { 42 } 47 48 51 public void classLoaded(VM vm) { 52 } 54 55 58 public void exceptionThrown(VM vm) { 59 } 61 62 65 public void objectCreated(VM vm) { 66 JVM jvm = (JVM) vm; 67 ThreadInfo ti = jvm.getLastThreadInfo(); 68 ElementInfo ei = jvm.getLastElementInfo(); 69 System.out.println("objectCreated: " + ti.getIndex() + ", " + 70 ei.getClassInfo().getName() + " = " + ei.getIndex()); 71 } 72 73 76 public void objectReleased(VM vm) { 77 JVM jvm = (JVM) vm; 78 ElementInfo ei = jvm.getLastElementInfo(); 79 System.out.println("objectReleased: " + ei.getClassInfo().getName() + " = " + ei.getIndex()); 80 } 81 82 public void gcBegin(VM vm) { 83 JVM jvm = (JVM)vm; 84 System.out.println("gcBegin"); 85 } 86 87 public void gcEnd(VM vm) { 88 JVM jvm = (JVM)vm; 89 System.out.println("gcEnd"); 90 } 91 92 95 public void threadStarted(VM vm) { 96 JVM jvm = (JVM) vm; 97 ThreadInfo ti = jvm.getLastThreadInfo(); 98 System.out.println("threadStarted: " + ti.getIndex()); 99 } 100 101 104 public void threadTerminated(VM vm) { 105 JVM jvm = (JVM) vm; 106 ThreadInfo ti = jvm.getLastThreadInfo(); 107 System.out.println("threadTerminated: " + ti.getIndex()); 108 } 109 110 void filterArgs (String [] args) { 111 } 113 114 public static void main (String [] args) { 115 TestVMListener listener = new TestVMListener(); 116 listener.filterArgs(args); 117 118 Config conf = JPF.createConfig(args); 119 JPF jpf = new JPF(conf); 121 jpf.getVM().addListener(listener); 122 123 System.out.println("---------------- starting JPF on class: " + args[0]); 124 jpf.run(); 125 System.out.println("---------------- JPF terminated"); 126 } 127 128 } 129 130 | Popular Tags |