From 22a4ec2838570a02b71bd0a405439a1206c79b5e Mon Sep 17 00:00:00 2001 From: Ben Fry Date: Sat, 4 May 2013 11:28:44 -0400 Subject: [PATCH] print stack traces of uncaught internal errors --- app/src/processing/mode/java/runner/Runner.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/processing/mode/java/runner/Runner.java b/app/src/processing/mode/java/runner/Runner.java index 4ecb73daf..3a4d32dfe 100644 --- a/app/src/processing/mode/java/runner/Runner.java +++ b/app/src/processing/mode/java/runner/Runner.java @@ -676,7 +676,7 @@ public class Runner implements MessageConsumer { // suspend so we can step excReq.setSuspendPolicy(EventRequest.SUSPEND_ALL); // excReq.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD); -// excReq.setSuspendPolicy(EventRequest.SUSPEND_NONE); // another option? +// excReq.setSuspendPolicy(EventRequest.SUSPEND_NONE); // another option? excReq.enable(); Thread eventThread = new Thread() { @@ -692,9 +692,10 @@ public class Runner implements MessageConsumer { for (Event event : eventSet) { // System.out.println("EventThread.handleEvent -> " + event); if (event instanceof ExceptionEvent) { - for (ThreadReference thread : vm.allThreads()) { - thread.suspend(); - } +// for (ThreadReference thread : vm.allThreads()) { +// System.out.println("thread : " + thread); +//// thread.suspend(); +// } exceptionEvent((ExceptionEvent) event); } else if (event instanceof VMDisconnectEvent) { connected = false; @@ -931,6 +932,14 @@ public class Runner implements MessageConsumer { return rex; } } +// for (Method m : ((ClassType) or.referenceType()).allMethods()) { +// System.out.println(m + " | " + m.signature() + " | " + m.genericSignature()); +// } + // Implemented for 2.0b9, writes a stack trace when there's an internal error inside core. + method = ((ClassType) or.referenceType()).concreteMethodByName("printStackTrace", "()V"); +// System.err.println("got method " + method); + or.invokeMethod(thread, method, new ArrayList(), ObjectReference.INVOKE_SINGLE_THREADED); + } catch (Exception e) { e.printStackTrace(); }