public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: tthomas@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Synchronize fhpd, stepping engine and breakpoints. Date: Fri, 06 Jun 2008 18:47:00 -0000 [thread overview] Message-ID: <20080606184725.22020.qmail@sourceware.org> (raw) The branch, master has been updated via 203393a2fbb9559a36f78993d292cf9ce5df9f13 (commit) via a7035a11b80fac86845eb16e7d36145f7a136d9e (commit) from 1cfab34772f780f0496b3d5007217b41c04264d6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 203393a2fbb9559a36f78993d292cf9ce5df9f13 Author: Teresa Thomas <tthomas@redhat.com> Date: Fri Jun 6 14:42:02 2008 -0400 Synchronize fhpd, stepping engine and breakpoints. frysk-core/frysk/hpd/ChangeLog: 2008-06-06 Teresa Thomas <tthomas@redhat.com> * BreakpointCommand.java (*.updateHit): Use SteppingEngine.updateActionpointDoneEvent. * TestBreakpoints.java (testGoAfterSimultaneousBreaks): New. frysk-core/frysk/rt/ChangeLog: 2008-06-06 Teresa Thomas <tthomas@redhat.com> * Breakpoint.java (updateHit): Update log message. frysk-core/frysk/stepping/ChangeLog: 2008-06-06 Teresa Thomas <tthomas@redhat.com> * SteppingEngine.java (updateActionpointDoneEvent): New. (blockedByActionPoint): Use updateActionpointDoneEvent. (blockedByActionPoint(Task,TaskObserver)): Test if messages set empty. commit a7035a11b80fac86845eb16e7d36145f7a136d9e Author: Teresa Thomas <tthomas@redhat.com> Date: Fri Jun 6 12:49:00 2008 -0400 Additional logging messages. frysk-core/frysk/proc/live/ChangeLog: 2008-06-06 Teresa Thomas <tthomas@redhat.com> * LinuxPtraceTaskState.java: Additional logging messages. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/hpd/BreakpointCommand.java | 73 ++++++++------------ frysk-core/frysk/hpd/ChangeLog | 6 ++ frysk-core/frysk/hpd/TestBreakpoints.java | 24 ++++++- frysk-core/frysk/proc/live/ChangeLog | 4 + .../frysk/proc/live/LinuxPtraceTaskState.java | 2 + frysk-core/frysk/rt/Breakpoint.java | 5 +- frysk-core/frysk/rt/ChangeLog | 6 ++- frysk-core/frysk/stepping/ChangeLog | 8 ++- frysk-core/frysk/stepping/SteppingEngine.java | 69 +++++++++---------- 9 files changed, 112 insertions(+), 85 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/hpd/BreakpointCommand.java b/frysk-core/frysk/hpd/BreakpointCommand.java index a732c80..082c1d2 100644 --- a/frysk-core/frysk/hpd/BreakpointCommand.java +++ b/frysk-core/frysk/hpd/BreakpointCommand.java @@ -47,14 +47,13 @@ import java.util.List; import java.util.Map; import frysk.debuginfo.ObjectDeclarationSearchEngine; -import frysk.event.Event; -import frysk.proc.Manager; import frysk.proc.Task; import frysk.rt.BreakpointManager; import frysk.rt.FunctionBreakpoint; import frysk.rt.LineBreakpoint; import frysk.rt.SourceBreakpoint; import frysk.rt.SourceBreakpointObserver; +import frysk.stepping.SteppingEngine; import frysk.value.ObjectDeclaration; class BreakpointCommand extends ParameterizedCommand { @@ -100,6 +99,8 @@ class BreakpointCommand extends ParameterizedCommand { BreakpointManager bpManager = cli.getSteppingEngine() .getBreakpointManager(); final PrintWriter outWriter = cli.getPrintWriter(); + final SteppingEngine ste = cli.getSteppingEngine(); + Iterator taskIter = ptset.getTasks(); // Map between tasks and breakpoints to enable. HashMap bptMap = new HashMap(); @@ -118,20 +119,15 @@ class BreakpointCommand extends ParameterizedCommand { final long address) { // Output the message in an Event in order to // allow all actions, fired by events currently in - // the loop, to run. - Manager.eventLoop.add(new Event() { - public void execute() { - LineBreakpoint lbpt = (LineBreakpoint) bpt; - outWriter.print("Breakpoint "); - outWriter.print(lbpt.getId()); - outWriter.print(" #"); - outWriter.print(lbpt.getFileName()); - outWriter.print("#"); - outWriter.print(lbpt.getLineNumber()); - outWriter.print(" 0x"); - outWriter.println(Long.toHexString(address)); - } - }); + // the loop, to run. + LineBreakpoint lbpt = (LineBreakpoint) bpt; + String message = "Breakpoint " + lbpt.getId() + + " #" + lbpt.getFileName() + "#" + + lbpt.getLineNumber() + " 0x" + + Long.toHexString(address) + "\n"; + ste.updateActionpointDoneEvent(message, outWriter); + + } }); while (taskIter.hasNext()) { @@ -140,7 +136,8 @@ class BreakpointCommand extends ParameterizedCommand { } else { while (taskIter.hasNext()) { Task task = (Task) taskIter.next(); - ObjectDeclarationSearchEngine declarationSearchEngine = new ObjectDeclarationSearchEngine(task); + ObjectDeclarationSearchEngine declarationSearchEngine = + new ObjectDeclarationSearchEngine(task); if (declarationSearchEngine != null) { @@ -155,19 +152,14 @@ class BreakpointCommand extends ParameterizedCommand { actionpoint.addObserver(new CLIBreakpointObserver() { public void updateHit(final SourceBreakpoint bpt, Task task, final long address) { - // See comment in case above. - Manager.eventLoop.add(new Event() { - public void execute() { - FunctionBreakpoint fbpt - = (FunctionBreakpoint) bpt; - outWriter.print("Breakpoint "); - outWriter.print(fbpt.getId()); - outWriter.print(" "); - outWriter.print(fbpt.getName()); - outWriter.print(" 0x"); - outWriter.println(Long.toHexString(address)); - } - }); + // Output the message in an Event in order to + // allow all actions, fired by events currently in + // the loop, to run. + FunctionBreakpoint fbpt = (FunctionBreakpoint) bpt; + String message = "Breakpoint " + fbpt.getId() + + " " + fbpt.getName() + " 0x" + + Long.toHexString(address) + "\n"; + ste.updateActionpointDoneEvent(message, outWriter); } }); bptMap.put(task, actionpoint); @@ -177,19 +169,14 @@ class BreakpointCommand extends ParameterizedCommand { actionpoint.addObserver(new CLIBreakpointObserver() { public void updateHit(final SourceBreakpoint bpt, Task task, final long address) { - // See comment in case above. - Manager.eventLoop.add(new Event() { - public void execute() { - FunctionBreakpoint fbpt - = (FunctionBreakpoint) bpt; - outWriter.print("Breakpoint "); - outWriter.print(fbpt.getId()); - outWriter.print(" "); - outWriter.print(fbpt.getName()); - outWriter.print(" 0x"); - outWriter.println(Long.toHexString(address)); - } - }); + // Output the message in an Event in order to + // allow all actions, fired by events currently in + // the loop, to run. + FunctionBreakpoint fbpt = (FunctionBreakpoint) bpt; + String message = "Breakpoint " + fbpt.getId() + + " " + fbpt.getName() + " 0x" + + Long.toHexString(address) + "\n"; + ste.updateActionpointDoneEvent(message, outWriter); } }); bptMap.put(task, actionpoint); diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog index 417a8e9..99eba18 100644 --- a/frysk-core/frysk/hpd/ChangeLog +++ b/frysk-core/frysk/hpd/ChangeLog @@ -1,3 +1,9 @@ +2008-06-06 Teresa Thomas <tthomas@redhat.com> + + * BreakpointCommand.java (*.updateHit): + Use SteppingEngine.updateActionpointDoneEvent. + * TestBreakpoints.java (testGoAfterSimultaneousBreaks): New. + 2006-06-06 Rick Moseley <rmoseley@redhat.com> * CoreCommand.java: Get args from commandline for run. diff --git a/frysk-core/frysk/hpd/TestBreakpoints.java b/frysk-core/frysk/hpd/TestBreakpoints.java index 5cb797b..2fe15a3 100644 --- a/frysk-core/frysk/hpd/TestBreakpoints.java +++ b/frysk-core/frysk/hpd/TestBreakpoints.java @@ -222,11 +222,33 @@ public class TestBreakpoints e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*"); e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*"); e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*"); - e.sendCommandExpectPrompt("step ", "Task stopped at line " + "[0-9]+ in file.*"); e.send("quit\n"); e.expect("Quitting..."); e.close(); } + public void testGoAfterSimultaneousBreaks() { + e = new HpdTestbed(); + e.sendCommandExpectPrompt("load " + Prefix.pkgLibFile("funit-hello").getPath(), + "Loaded executable file.*"); + + e.sendCommandExpectPrompt("start", "Attached to process ([0-9]+).*"); + e.send("break main\n"); + e.expect("break.*" + prompt); + e.send("break main\n"); + e.expect("break.*" + prompt); + e.send("break print\n"); + e.expect("break.*" + prompt); + + e.send("go\n"); + e.expect("go.*" + prompt + "Breakpoint.*main.*"); + e.send("go\n"); + e.expect("go.*" + prompt + "Breakpoint.*print.*"); + + e.send("quit\n"); + e.expect("Quitting..."); + e.close(); + } + } diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index f9a12dd..eee24c5 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,3 +1,7 @@ +2008-06-06 Teresa Thomas <tthomas@redhat.com> + + * LinuxPtraceTaskState.java: Additional logging messages. + 2008-06-04 Andrew Cagney <cagney@redhat.com> * LinuxPtraceProc.java: Delete AuxvBuilder.buildBuffer. diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java index d8c61a3..a819b9a 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java @@ -691,6 +691,7 @@ abstract class LinuxPtraceTaskState extends State { } LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task, Signal signal) { + fine.log("handleStoppedEvent", task); if (signal == Signal.STOP || signal == Signal.TRAP) { // Attempt an attached continue. task.initializeAttachedState(); @@ -802,6 +803,7 @@ abstract class LinuxPtraceTaskState extends State { } LinuxPtraceTaskState handleStoppedEvent(LinuxPtraceTask task, Signal signal) { + fine.log("handleStoppedEvent", task); if (signal == Signal.STOP) { Collection pendingObservations = task.pendingObservations; if (pendingObservations.isEmpty()) { diff --git a/frysk-core/frysk/rt/Breakpoint.java b/frysk-core/frysk/rt/Breakpoint.java index f6214f4..13c205f 100644 --- a/frysk-core/frysk/rt/Breakpoint.java +++ b/frysk-core/frysk/rt/Breakpoint.java @@ -81,9 +81,8 @@ public class Breakpoint implements TaskObserver.Code { return Action.CONTINUE; } else { - fine.log(this, "updateHit adding instruction observer", task, - "address", address); - + fine.log(this, "updateHit calling blockedByActionPoint", task, + "address", address); this.steppingEngine.blockedByActionPoint(task, this); task.requestUnblock(this); } diff --git a/frysk-core/frysk/rt/ChangeLog b/frysk-core/frysk/rt/ChangeLog index 206bab1..5622595 100644 --- a/frysk-core/frysk/rt/ChangeLog +++ b/frysk-core/frysk/rt/ChangeLog @@ -1,7 +1,11 @@ +2008-06-06 Teresa Thomas <tthomas@redhat.com> + + * Breakpoint.java (updateHit): Update log message. + 2008-06-05 Andrew Cagney <cagney@redhat.com> * FunctionBreakpoint.java: Use DwflDie. - + 2008-06-03 Andrew Cagney <cagney@redhat.com> * FunctionBreakpoint.java: Do not use InlinedSubroutine. diff --git a/frysk-core/frysk/stepping/ChangeLog b/frysk-core/frysk/stepping/ChangeLog index e158c8a..014849c 100644 --- a/frysk-core/frysk/stepping/ChangeLog +++ b/frysk-core/frysk/stepping/ChangeLog @@ -1,4 +1,10 @@ -2008-05-23 Teresa Thomas <tthomas@redhat.com> +2008-06-06 Teresa Thomas <tthomas@redhat.com> + + * SteppingEngine.java (updateActionpointDoneEvent): New. + (blockedByActionPoint): Use updateActionpointDoneEvent. + (blockedByActionPoint(Task,TaskObserver)): Test if messages set empty. + +2008-05-23 Teresa Thomas <tthomas@redhat.com> * SteppingEngine.java (messages): New. (blockedByActionPoint(Task,TaskObserver,String,PrintWriter)): New. diff --git a/frysk-core/frysk/stepping/SteppingEngine.java b/frysk-core/frysk/stepping/SteppingEngine.java index 796d0b6..7dab132 100644 --- a/frysk-core/frysk/stepping/SteppingEngine.java +++ b/frysk-core/frysk/stepping/SteppingEngine.java @@ -995,43 +995,8 @@ public class SteppingEngine { */ public void blockedByActionPoint(Task task, TaskObserver to) { - // Requests the addition of the stepping observer to task if - // not inserted already. - if (!(task.isInstructionObserverAdded(this.steppingObserver))) { - task.requestAddInstructionObserver(this.steppingObserver); - } - - // Add the observer to the task's blockers list - addBlocker(task, to); - - TaskStepEngine tse = null; - tse = (TaskStepEngine) this.taskStateMap.get(task); - if (!tse.isStopped()) { - // Set the state of task as stopped - tse.setState(new StoppedState(task)); - // Remove the task from the running tasks list - this.runningTasks.remove(task); - } - } - - /** - * Sets the stepping engine on being hit by an action point. - * - * to - Observer that causes task to block. - * message - message describing the cause of program block - * writer - writer to print message to - */ - public void blockedByActionPoint(Task task, TaskObserver to, - String message, PrintWriter writer) { - - /* Set messages being empty implies the fist action point being hit. - */ if (messages.isEmpty()) { - // Schedule a done event on the first sight of an action point - Event e = new ActionPointEvent(messages, writer); - Manager.eventLoop.add(e); - // Requests the addition of the stepping observer to task if // not inserted already. if (!(task.isInstructionObserverAdded(this.steppingObserver))) { @@ -1050,10 +1015,42 @@ public class SteppingEngine { this.runningTasks.remove(task); } } - messages.add(message); } /** + * Sets the stepping engine on being hit by an action point. + * + * to - Observer that causes task to block. + * message - message describing the cause of program block + * writer - writer to print message to + */ + public void blockedByActionPoint(Task task, TaskObserver to, + String message, PrintWriter writer) { + blockedByActionPoint(task, to); + // Schedule a done event + updateActionpointDoneEvent(message, writer); + } + + /** + * Creates an actionpoint done event at the first sight of an + * action point. This event process the action point messages + * to be outputted. + * + * @param message - Actionpoint information message to be added + * @param writer - writer to print message to + */ + public void updateActionpointDoneEvent (String message, PrintWriter writer) { + + // Schedule event only for the first actionpoint hit. + // For others, just add message to the messages set. + if (messages.isEmpty()) { + Event e = new ActionPointEvent(messages, writer); + Manager.eventLoop.add(e); + } + messages.add(message); + } + + /** * Adds the given Observer to this.steppingObserver's Observer list. * * @param o The Observer to be added. hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-06-06 18:47 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080606184725.22020.qmail@sourceware.org \ --to=tthomas@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).