diff --git a/TracerOnJavassist/src/tracer/OutputStatementsGenerator.java b/TracerOnJavassist/src/tracer/OutputStatementsGenerator.java index f4e2011..c9a92de 100644 --- a/TracerOnJavassist/src/tracer/OutputStatementsGenerator.java +++ b/TracerOnJavassist/src/tracer/OutputStatementsGenerator.java @@ -72,15 +72,15 @@ } public String generateReplaceStatementsForCall(CtClass cls, CtBehavior m) throws NotFoundException { - return generateInsertBeforeStatements(cls, m, true) + " $_ = $proceed($$); " + generateInsertAfterStatements(cls, m, true); + return "{" + generateInsertBeforeStatements(cls, m, true) + " $_ = $proceed($$); " + generateInsertAfterStatements(cls, m, true) + "}"; } public String generateInsertBeforeStatementsForMethodBody(CtClass cls, CtBehavior m) throws NotFoundException { - return generateInsertBeforeStatements(cls, m, false); + return "{" + generateInsertBeforeStatements(cls, m, false) + "}"; } public String generateInsertAfterStatementsForMethodBody(CtClass cls, CtBehavior m) throws NotFoundException { - return generateInsertAfterStatements(cls, m, false); + return "{" + generateInsertAfterStatements(cls, m, false) + "}"; } /** diff --git a/TracerOnJavassist/src/tracer/Tracer.java b/TracerOnJavassist/src/tracer/Tracer.java index 8358f98..9f085af 100644 --- a/TracerOnJavassist/src/tracer/Tracer.java +++ b/TracerOnJavassist/src/tracer/Tracer.java @@ -33,7 +33,7 @@ public static int lineNo = 1; private static final String STANDARD_CLASSES = "java.util.ListIterator|java.util.Iterator|java.util.List|java.util.Vector|java.util.ArrayList|java.util.Stack|java.util.Map|java.util.HashMap|java.util.Set|java.util.HashSet|java.util.Hashtable|java.util.LinkedList|java.lang.Thread"; private static final String CONCRETE_STANDARD_CLASSES = "java.util.Vector|java.util.ArrayList|java.util.Stack |java.util.HashMap|java.util.HashSet|java.util.Hashtable|java.util.LinkedList|java.lang.Thread"; - private static final String EXCEPT_FOR_METHODS = "java.lang.Thread.currentThread()|java.lang.Thread.getId()"; + private static final String EXCEPT_FOR_METHODS = "java.lang.Thread.currentThread..|java.lang.Thread.getId.."; private static OutputStatementsGenerator outputStatementsGenerator = null; private static CodeConverter conv = new CodeConverter(); @@ -124,7 +124,7 @@ public void edit(MethodCall c) throws CannotCompileException { try { CtMethod m = c.getMethod(); - if (m.getDeclaringClass().getName().matches(STANDARD_CLASSES) && m.getLongName().matches(EXCEPT_FOR_METHODS)) { + if (m.getDeclaringClass().getName().matches(STANDARD_CLASSES) && !m.getLongName().matches(EXCEPT_FOR_METHODS)) { c.replace(outputStatementsGenerator.generateReplaceStatementsForCall(m.getDeclaringClass(), m)); } } catch (NotFoundException e) { diff --git a/TracerOnJavassist/traces/_threadSample.txt b/TracerOnJavassist/traces/_threadSample.txt index 7b1a10d..e978c58 100644 --- a/TracerOnJavassist/traces/_threadSample.txt +++ b/TracerOnJavassist/traces/_threadSample.txt @@ -1,47 +1,51 @@ -{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":24137403},"index":0,"value":{"class":"[Ljava.lang.String;","id":1950406585}}, -{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":24137403},"index":0,"value":{"class":"[Ljava.lang.String;","id":1950406585}}, -{"type":"methodEntry","signature":"public static void threadSample.Main.main(java.lang.String[])","receiver":{"class":"threadSample.Main","id":0},"args":[{"class":"[Ljava.lang.String;","id":1950406585}],"threadId":1,"time":1359366782302740}, -{"type":"blockEntry","methodSignature":"threadSample.Main.main(java.lang.String[])","blockId":0,"incomings":0,"threadId":1,"time":1359366782322059}, -{"type":"constructorEntry","signature":"public threadSample.ThreadSample()","class":"threadSample.ThreadSample","args":[],"threadId":1,"time":1359366782483554}, -{"type":"constructorExit","shortSignature":"threadSample.ThreadSample()","returnValue":{"class":"threadSample.ThreadSample","id":17024288},"threadId":1,"time":1359366782526117}, -{"type":"methodExit","shortSignature":"threadSample.Main.main(java.lang.String[])","receiver":{"class":"threadSample.Main","id":0},"returnValue":{"class":"void","id":0},"threadId":1,"time":1359366782635994}, -{"type":"methodEntry","signature":"public void threadSample.ThreadSample.run()","receiver":{"class":"threadSample.ThreadSample","id":17024288},"args":[],"threadId":10,"time":1359366782747984}, -{"type":"blockEntry","methodSignature":"threadSample.ThreadSample.run()","blockId":0,"incomings":0,"threadId":10,"time":1359366782766700}, -{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1954210149},"index":0,"value":{"class":"threadSample.ThreadSample","id":17024288}}, -{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1954210149},"index":0,"value":{"class":"threadSample.ThreadSample","id":17024288}}, -{"type":"constructorEntry","signature":"threadSample.ThreadSample.1(threadSample.ThreadSample)","class":"threadSample.ThreadSample$1","args":[{"class":"threadSample.ThreadSample","id":17024288}],"threadId":10,"time":1359366783687376}, -{"type":"constructorExit","shortSignature":"threadSample.ThreadSample.1(threadSample.ThreadSample)","returnValue":{"class":"threadSample.ThreadSample$1","id":795077025},"threadId":10,"time":1359366783712128}, -{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1216307541},"index":0,"value":{"class":"threadSample.ThreadSample$1","id":795077025}}, -{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1216307541},"index":0,"value":{"class":"threadSample.ThreadSample$1","id":795077025}}, -{"type":"constructorEntry","signature":"public java.lang.Thread(java.lang.Runnable)","class":"java.lang.Thread","args":[{"class":"threadSample.ThreadSample$1","id":795077025}],"threadId":10,"time":1359366783832571}, -{"type":"constructorExit","shortSignature":"java.lang.Thread(java.lang.Runnable)","returnValue":{"class":"java.lang.Thread","id":584005794},"threadId":10,"time":1359366783863662}, -{"type":"methodExit","shortSignature":"threadSample.ThreadSample.run()","receiver":{"class":"threadSample.ThreadSample","id":17024288},"returnValue":{"class":"void","id":0},"threadId":10,"time":1359366783959050}, -{"type":"methodEntry","signature":"public void threadSample.ThreadSample.1.run()","receiver":{"class":"threadSample.ThreadSample$1","id":795077025},"args":[],"threadId":12,"time":1359366784048703}, -{"type":"blockEntry","methodSignature":"threadSample.ThreadSample.1.run()","blockId":0,"incomings":0,"threadId":12,"time":1359366784061683}, -{"type":"constructorEntry","signature":"public threadSample.A()","class":"threadSample.A","args":[],"threadId":12,"time":1359366784821165}, -{"type":"constructorEntry","signature":"public threadSample.B()","class":"threadSample.B","args":[],"threadId":12,"time":1359366785600268}, -{"type":"constructorEntry","signature":"public threadSample.C()","class":"threadSample.C","args":[],"threadId":12,"time":1359366786357335}, -{"type":"constructorExit","shortSignature":"threadSample.C()","returnValue":{"class":"threadSample.C","id":1022253574},"threadId":12,"time":1359366786425556}, -{"type":"fieldSet","fieldName":"threadSample.B.c","container":{"class":"threadSample.B","id":1146642218},"value":{"class":"threadSample.C","id":1022253574},"threadId":12,"time":1359366786480796}, -{"type":"constructorExit","shortSignature":"threadSample.B()","returnValue":{"class":"threadSample.B","id":1146642218},"threadId":12,"time":1359366786504945}, -{"type":"fieldSet","fieldName":"threadSample.A.b","container":{"class":"threadSample.A","id":97509748},"value":{"class":"threadSample.B","id":1146642218},"threadId":12,"time":1359366786562903}, -{"type":"constructorEntry","signature":"public threadSample.D()","class":"threadSample.D","args":[],"threadId":12,"time":1359366787515274}, -{"type":"constructorExit","shortSignature":"threadSample.D()","returnValue":{"class":"threadSample.D","id":752550817},"threadId":12,"time":1359366787570514}, -{"type":"fieldSet","fieldName":"threadSample.A.d","container":{"class":"threadSample.A","id":97509748},"value":{"class":"threadSample.D","id":752550817},"threadId":12,"time":1359366787605530}, -{"type":"constructorExit","shortSignature":"threadSample.A()","returnValue":{"class":"threadSample.A","id":97509748},"threadId":12,"time":1359366787628773}, -{"type":"methodEntry","signature":"public void threadSample.A.m()","receiver":{"class":"threadSample.A","id":97509748},"args":[],"threadId":12,"time":1359366787663789}, -{"type":"blockEntry","methodSignature":"threadSample.A.m()","blockId":0,"incomings":0,"threadId":12,"time":1359366787683410}, -{"type":"fieldGet","fieldName":"threadSample.A.d","this":{"class":"threadSample.A","id":97509748},"container":{"class":"threadSample.A","id":97509748},"value":{"class":"threadSample.D","id":752550817},"threadId":12,"time":1359366787724463}, -{"type":"fieldGet","fieldName":"threadSample.A.b","this":{"class":"threadSample.A","id":97509748},"container":{"class":"threadSample.A","id":97509748},"value":{"class":"threadSample.B","id":1146642218},"threadId":12,"time":1359366787763102}, -{"type":"methodEntry","signature":"public threadSample.C threadSample.B.getC()","receiver":{"class":"threadSample.B","id":1146642218},"args":[],"threadId":12,"time":1359366787794193}, -{"type":"blockEntry","methodSignature":"threadSample.B.getC()","blockId":0,"incomings":0,"threadId":12,"time":1359366787812909}, -{"type":"fieldGet","fieldName":"threadSample.B.c","this":{"class":"threadSample.B","id":1146642218},"container":{"class":"threadSample.B","id":1146642218},"value":{"class":"threadSample.C","id":1022253574},"threadId":12,"time":1359366787848528}, -{"type":"methodExit","shortSignature":"threadSample.B.getC()","receiver":{"class":"threadSample.B","id":1146642218},"returnValue":{"class":"threadSample.C","id":1022253574},"threadId":12,"time":1359366787880224}, -{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1590384136},"index":0,"value":{"class":"threadSample.C","id":1022253574}}, -{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1590384136},"index":0,"value":{"class":"threadSample.C","id":1022253574}}, -{"type":"methodEntry","signature":"public void threadSample.D.setC(threadSample.C)","receiver":{"class":"threadSample.D","id":752550817},"args":[{"class":"threadSample.C","id":1022253574}],"threadId":12,"time":1359366788057718}, -{"type":"blockEntry","methodSignature":"threadSample.D.setC(threadSample.C)","blockId":0,"incomings":0,"threadId":12,"time":1359366788070396}, -{"type":"fieldSet","fieldName":"threadSample.D.c","container":{"class":"threadSample.D","id":752550817},"value":{"class":"threadSample.C","id":1022253574},"threadId":12,"time":1359366788092130}, -{"type":"methodExit","shortSignature":"threadSample.D.setC(threadSample.C)","receiver":{"class":"threadSample.D","id":752550817},"returnValue":{"class":"void","id":0},"threadId":12,"time":1359366788111147}, -{"type":"methodExit","shortSignature":"threadSample.A.m()","receiver":{"class":"threadSample.A","id":97509748},"returnValue":{"class":"void","id":0},"threadId":12,"time":1359366788131070}, -{"type":"methodExit","shortSignature":"threadSample.ThreadSample.1.run()","receiver":{"class":"threadSample.ThreadSample$1","id":795077025},"returnValue":{"class":"void","id":0},"threadId":12,"time":1359366788150993}, +{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1293086287},"index":0,"value":{"class":"[Ljava.lang.String;","id":366717969}}, +{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1293086287},"index":0,"value":{"class":"[Ljava.lang.String;","id":366717969}}, +{"type":"methodEntry","signature":"public static void threadSample.Main.main(java.lang.String[])","receiver":{"class":"threadSample.Main","id":0},"args":[{"class":"[Ljava.lang.String;","id":366717969}],"threadId":1,"time":1368740396939251}, +{"type":"blockEntry","methodSignature":"threadSample.Main.main(java.lang.String[])","blockId":0,"incomings":0,"threadId":1,"time":1368740396973361}, +{"type":"constructorEntry","signature":"public threadSample.ThreadSample()","class":"threadSample.ThreadSample","args":[],"threadId":1,"time":1368740397274920}, +{"type":"constructorExit","shortSignature":"threadSample.ThreadSample()","returnValue":{"class":"threadSample.ThreadSample","id":404225673},"threadId":1,"time":1368740397348574}, +{"type":"methodEntry","signature":"public synchronized void java.lang.Thread.start()","receiver":{"class":"threadSample.ThreadSample","id":404225673},"args":[],"threadId":1,"time":1368740397375742}, +{"type":"methodExit","shortSignature":"java.lang.Thread.start()","receiver":{"class":"threadSample.ThreadSample","id":404225673},"returnValue":{"class":"void","id":0},"threadId":1,"time":1368740397510371}, +{"type":"methodExit","shortSignature":"threadSample.Main.main(java.lang.String[])","receiver":{"class":"threadSample.Main","id":0},"returnValue":{"class":"void","id":0},"threadId":1,"time":1368740397533615}, +{"type":"methodEntry","signature":"public void threadSample.ThreadSample.run()","receiver":{"class":"threadSample.ThreadSample","id":404225673},"args":[],"threadId":10,"time":1368740397627795}, +{"type":"blockEntry","methodSignature":"threadSample.ThreadSample.run()","blockId":0,"incomings":0,"threadId":10,"time":1368740397654057}, +{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1216307541},"index":0,"value":{"class":"threadSample.ThreadSample","id":404225673}}, +{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1216307541},"index":0,"value":{"class":"threadSample.ThreadSample","id":404225673}}, +{"type":"constructorEntry","signature":"threadSample.ThreadSample.1(threadSample.ThreadSample)","class":"threadSample.ThreadSample$1","args":[{"class":"threadSample.ThreadSample","id":404225673}],"threadId":10,"time":1368740398858784}, +{"type":"constructorExit","shortSignature":"threadSample.ThreadSample.1(threadSample.ThreadSample)","returnValue":{"class":"threadSample.ThreadSample$1","id":584005794},"threadId":10,"time":1368740398900441}, +{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1385112968},"index":0,"value":{"class":"threadSample.ThreadSample$1","id":584005794}}, +{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1385112968},"index":0,"value":{"class":"threadSample.ThreadSample$1","id":584005794}}, +{"type":"constructorEntry","signature":"public java.lang.Thread(java.lang.Runnable)","class":"java.lang.Thread","args":[{"class":"threadSample.ThreadSample$1","id":584005794}],"threadId":10,"time":1368740399055296}, +{"type":"constructorExit","shortSignature":"java.lang.Thread(java.lang.Runnable)","returnValue":{"class":"java.lang.Thread","id":870919696},"threadId":10,"time":1368740399097858}, +{"type":"methodEntry","signature":"public synchronized void java.lang.Thread.start()","receiver":{"class":"java.lang.Thread","id":870919696},"args":[],"threadId":10,"time":1368740399123516}, +{"type":"methodExit","shortSignature":"java.lang.Thread.start()","receiver":{"class":"java.lang.Thread","id":870919696},"returnValue":{"class":"void","id":0},"threadId":10,"time":1368740399233997}, +{"type":"methodExit","shortSignature":"threadSample.ThreadSample.run()","receiver":{"class":"threadSample.ThreadSample","id":404225673},"returnValue":{"class":"void","id":0},"threadId":10,"time":1368740399254222}, +{"type":"methodEntry","signature":"public void threadSample.ThreadSample.1.run()","receiver":{"class":"threadSample.ThreadSample$1","id":584005794},"args":[],"threadId":12,"time":1368740399316707}, +{"type":"blockEntry","methodSignature":"threadSample.ThreadSample.1.run()","blockId":0,"incomings":0,"threadId":12,"time":1368740399333008}, +{"type":"constructorEntry","signature":"public threadSample.A()","class":"threadSample.A","args":[],"threadId":12,"time":1368740408055279}, +{"type":"constructorEntry","signature":"public threadSample.B()","class":"threadSample.B","args":[],"threadId":12,"time":1368740415356691}, +{"type":"constructorEntry","signature":"public threadSample.C()","class":"threadSample.C","args":[],"threadId":12,"time":1368740422299190}, +{"type":"constructorExit","shortSignature":"threadSample.C()","returnValue":{"class":"threadSample.C","id":97509748},"threadId":12,"time":1368740422345676}, +{"type":"fieldSet","fieldName":"threadSample.B.c","container":{"class":"threadSample.B","id":316311975},"value":{"class":"threadSample.C","id":97509748},"threadId":12,"time":1368740422380692}, +{"type":"constructorExit","shortSignature":"threadSample.B()","returnValue":{"class":"threadSample.B","id":316311975},"threadId":12,"time":1368740422396691}, +{"type":"fieldSet","fieldName":"threadSample.A.b","container":{"class":"threadSample.A","id":1233337500},"value":{"class":"threadSample.B","id":316311975},"threadId":12,"time":1368740422429594}, +{"type":"constructorEntry","signature":"public threadSample.D()","class":"threadSample.D","args":[],"threadId":12,"time":1368740430485959}, +{"type":"constructorExit","shortSignature":"threadSample.D()","returnValue":{"class":"threadSample.D","id":2004703190},"threadId":12,"time":1368740430527918}, +{"type":"fieldSet","fieldName":"threadSample.A.d","container":{"class":"threadSample.A","id":1233337500},"value":{"class":"threadSample.D","id":2004703190},"threadId":12,"time":1368740430552067}, +{"type":"constructorExit","shortSignature":"threadSample.A()","returnValue":{"class":"threadSample.A","id":1233337500},"threadId":12,"time":1368740430568971}, +{"type":"methodEntry","signature":"public void threadSample.A.m()","receiver":{"class":"threadSample.A","id":1233337500},"args":[],"threadId":12,"time":1368740430588894}, +{"type":"blockEntry","methodSignature":"threadSample.A.m()","blockId":0,"incomings":0,"threadId":12,"time":1368740430599761}, +{"type":"fieldGet","fieldName":"threadSample.A.d","this":{"class":"threadSample.A","id":1233337500},"container":{"class":"threadSample.A","id":1233337500},"value":{"class":"threadSample.D","id":2004703190},"threadId":12,"time":1368740430623608}, +{"type":"fieldGet","fieldName":"threadSample.A.b","this":{"class":"threadSample.A","id":1233337500},"container":{"class":"threadSample.A","id":1233337500},"value":{"class":"threadSample.B","id":316311975},"threadId":12,"time":1368740430645946}, +{"type":"methodEntry","signature":"public threadSample.C threadSample.B.getC()","receiver":{"class":"threadSample.B","id":316311975},"args":[],"threadId":12,"time":1368740430665869}, +{"type":"blockEntry","methodSignature":"threadSample.B.getC()","blockId":0,"incomings":0,"threadId":12,"time":1368740430677641}, +{"type":"fieldGet","fieldName":"threadSample.B.c","this":{"class":"threadSample.B","id":316311975},"container":{"class":"threadSample.B","id":316311975},"value":{"class":"threadSample.C","id":97509748},"threadId":12,"time":1368740430699979}, +{"type":"methodExit","shortSignature":"threadSample.B.getC()","receiver":{"class":"threadSample.B","id":316311975},"returnValue":{"class":"threadSample.C","id":97509748},"threadId":12,"time":1368740430719902}, +{"type":"arraySet","array":{"class":"[Ljava.lang.Object;","id":1175576547},"index":0,"value":{"class":"threadSample.C","id":97509748}}, +{"type":"arrayGet","array":{"class":"[Ljava.lang.Object;","id":1175576547},"index":0,"value":{"class":"threadSample.C","id":97509748}}, +{"type":"methodEntry","signature":"public void threadSample.D.setC(threadSample.C)","receiver":{"class":"threadSample.D","id":2004703190},"args":[{"class":"threadSample.C","id":97509748}],"threadId":12,"time":1368740430856645}, +{"type":"blockEntry","methodSignature":"threadSample.D.setC(threadSample.C)","blockId":0,"incomings":0,"threadId":12,"time":1368740430869625}, +{"type":"fieldSet","fieldName":"threadSample.D.c","container":{"class":"threadSample.D","id":2004703190},"value":{"class":"threadSample.C","id":97509748},"threadId":12,"time":1368740430890755}, +{"type":"methodExit","shortSignature":"threadSample.D.setC(threadSample.C)","receiver":{"class":"threadSample.D","id":2004703190},"returnValue":{"class":"void","id":0},"threadId":12,"time":1368740430910074}, +{"type":"methodExit","shortSignature":"threadSample.A.m()","receiver":{"class":"threadSample.A","id":1233337500},"returnValue":{"class":"void","id":0},"threadId":12,"time":1368740430930601}, +{"type":"methodExit","shortSignature":"threadSample.ThreadSample.1.run()","receiver":{"class":"threadSample.ThreadSample$1","id":584005794},"returnValue":{"class":"void","id":0},"threadId":12,"time":1368740430952335},