< prev index next >

src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTY.java

Print this page

        

*** 97,107 **** --- 97,125 ---- } @Override public void breakpointEvent(BreakpointEvent be) { Thread.yield(); // fetch output + MessageOutput.startBuffering(); + try { MessageOutput.lnprint("Breakpoint hit:"); + // Print current location if suspend policy is SUSPEND_NONE and + // current location and prompt if suspend policy is SUSPEND_EVENT_THREAD. + // In case of SUSPEND_ALL policy this is handled by vmInterrupted() method. + int suspendPolicy = be.request().suspendPolicy(); + switch (suspendPolicy) { + case EventRequest.SUSPEND_EVENT_THREAD: + printCurrentLocation(ThreadInfo.getThreadInfo(be.thread())); + MessageOutput.printPrompt(); + break; + case EventRequest.SUSPEND_NONE: + printBreakpointLocation(be); + break; + } + } finally { + MessageOutput.stopBuffering(); + } } @Override public void fieldWatchEvent(WatchpointEvent fwe) { Field field = fwe.field();
*** 144,161 **** --- 162,184 ---- /* * These can be very numerous, so be as efficient as possible. * If we are stopping here, then we will see the normal location * info printed. */ + MessageOutput.startBuffering(); + try { if (me.request().suspendPolicy() != EventRequest.SUSPEND_NONE) { // We are stopping; the name will be shown by the normal mechanism MessageOutput.lnprint("Method entered:"); } else { // We aren't stopping, show the name MessageOutput.print("Method entered:"); printLocationOfEvent(me); } + } finally { + MessageOutput.stopBuffering(); + } } @Override public boolean methodExitEvent(MethodExitEvent me) { Thread.yield(); // fetch output
*** 167,176 **** --- 190,201 ---- if (mmm == null || mmm.equals(meMethod)) { // Either we are not tracing a specific method, or we are // and we are exitting that method. + MessageOutput.startBuffering(); + try { if (me.request().suspendPolicy() != EventRequest.SUSPEND_NONE) { // We will be stopping here, so do a newline MessageOutput.println(); } if (Env.vm().canGetMethodReturnValues()) {
*** 182,191 **** --- 207,219 ---- if (me.request().suspendPolicy() == EventRequest.SUSPEND_NONE) { // We won't be stopping here, so show the method name printLocationOfEvent(me); } + } finally{ + MessageOutput.stopBuffering(); + } // In case we want to have a one shot trace exit some day, this // code disables the request so we don't hit it again. if (false) { // This is a one shot deal; we don't want to stop
*** 226,248 **** new Object [] {threadName, Commands.locationString(loc)}); } private void printCurrentLocation() { ! ThreadInfo threadInfo = ThreadInfo.getCurrentThreadInfo(); StackFrame frame; try { frame = threadInfo.getCurrentFrame(); } catch (IncompatibleThreadStateException exc) { MessageOutput.println("<location unavailable>"); return; } if (frame == null) { MessageOutput.println("No frames on the current call stack"); } else { ! Location loc = frame.location(); ! printBaseLocation(threadInfo.getThread().name(), loc); // Output the current source line, if possible if (loc.lineNumber() != -1) { String line; try { line = Env.sourceLine(loc, loc.lineNumber()); --- 254,288 ---- new Object [] {threadName, Commands.locationString(loc)}); } private void printCurrentLocation() { ! printCurrentLocation(ThreadInfo.getCurrentThreadInfo()); ! } ! ! private void printBreakpointLocation(BreakpointEvent be) { ! printLocationWithSourceLine(be.thread().name(), be.location()); ! } ! ! private void printCurrentLocation(ThreadInfo threadInfo) { StackFrame frame; try { frame = threadInfo.getCurrentFrame(); } catch (IncompatibleThreadStateException exc) { MessageOutput.println("<location unavailable>"); return; } if (frame == null) { MessageOutput.println("No frames on the current call stack"); } else { ! printLocationWithSourceLine(threadInfo.getThread().name(), frame.location()); ! } ! MessageOutput.println(); ! } ! ! private void printLocationWithSourceLine(String threadName, Location loc) { ! printBaseLocation(threadName, loc); // Output the current source line, if possible if (loc.lineNumber() != -1) { String line; try { line = Env.sourceLine(loc, loc.lineNumber());
*** 254,265 **** new Object [] {loc.lineNumber(), line}); } } } - MessageOutput.println(); - } private void printLocationOfEvent(LocatableEvent theEvent) { printBaseLocation(theEvent.thread().name(), theEvent.location()); } --- 294,303 ----
< prev index next >