Author: martin
Date: 2005-09-23 11:16:31 -0400 (Fri, 23 Sep 2005)
New Revision: 50577

Modified:
   trunk/debugger/ChangeLog
   trunk/debugger/backends/Process.cs
   trunk/debugger/backends/SingleSteppingEngine.cs
   trunk/debugger/test/TestBreakpoint.cs
   trunk/debugger/test/mono-debugger.tests/TestBreakpoint.exp
Log:
2005-09-23  Martin Baulig  <[EMAIL PROTECTED]>

        * backends/SingleSteppingEngine.cs
        (OperationRun): Derive from `Opeartion', not `OperationStepBase'.
        (OperationCompileMethod): Killed the nested operation.
        (OperationRuntimeInvoke.DoProcessEvent): Step over breakpoints
        during runtime-invoke.

        * test/mono-debugger.tests/TestBreakpoint.exp: Added test case: we
        step over breakpoints during runtime-invoke.



Modified: trunk/debugger/ChangeLog
===================================================================
--- trunk/debugger/ChangeLog    2005-09-23 14:18:15 UTC (rev 50576)
+++ trunk/debugger/ChangeLog    2005-09-23 15:16:31 UTC (rev 50577)
@@ -1,3 +1,14 @@
+2005-09-23  Martin Baulig  <[EMAIL PROTECTED]>
+
+       * backends/SingleSteppingEngine.cs
+       (OperationRun): Derive from `Opeartion', not `OperationStepBase'.
+       (OperationCompileMethod): Killed the nested operation.
+       (OperationRuntimeInvoke.DoProcessEvent): Step over breakpoints
+       during runtime-invoke.
+
+       * test/mono-debugger.tests/TestBreakpoint.exp: Added test case: we
+       step over breakpoints during runtime-invoke.
+
 2005-09-22  Martin Baulig  <[EMAIL PROTECTED]>
 
        * interfaces/ITargetStructType.cs

Modified: trunk/debugger/backends/Process.cs
===================================================================
--- trunk/debugger/backends/Process.cs  2005-09-23 14:18:15 UTC (rev 50576)
+++ trunk/debugger/backends/Process.cs  2005-09-23 15:16:31 UTC (rev 50577)
@@ -592,6 +592,10 @@
                        operation_completed_event.WaitOne ();
 
                        RuntimeInvokeResult res = (RuntimeInvokeResult) 
result.Result;
+                       if (res == null) {
+                               exc_message = null;
+                               return null;
+                       }
                        exc_message = res.ExceptionMessage;
                        return res.ReturnObject;
                }

Modified: trunk/debugger/backends/SingleSteppingEngine.cs
===================================================================
--- trunk/debugger/backends/SingleSteppingEngine.cs     2005-09-23 14:18:15 UTC 
(rev 50576)
+++ trunk/debugger/backends/SingleSteppingEngine.cs     2005-09-23 15:16:31 UTC 
(rev 50577)
@@ -181,8 +181,9 @@
                                              status);
                        else
                                Report.Debug (DebugFlags.EventLoop,
-                                             "{0} received event {1} ({2:x})",
-                                             this, cevent, status);
+                                             "{0} received event {1} ({2:x}) 
at {3} while running {4}",
+                                             this, cevent, status, 
inferior.CurrentFrame,
+                                             current_operation);
 
                        if (manager.HandleChildEvent (this, inferior, ref 
cevent))
                                return;
@@ -206,6 +207,8 @@
                        Inferior.ChildEventType message = cevent.Type;
                        int arg = (int) cevent.Argument;
 
+                       bool exiting = false;
+
                        TargetEventArgs result = null;
 
                        if ((message == 
Inferior.ChildEventType.THROW_EXCEPTION) ||
@@ -271,6 +274,9 @@
                                        temp_breakpoint_id = 0;
 
                                        Breakpoint bpt = 
manager.BreakpointManager.LookupBreakpoint (arg);
+                                       Report.Debug (DebugFlags.SSE,
+                                                     "{0} hit temporary 
breakpoint {1} at {2} {3}",
+                                                     this, arg, 
inferior.CurrentFrame, bpt);
                                        if (bpt == null) {
                                                message = 
Inferior.ChildEventType.CHILD_STOPPED;
                                                arg = 0;
@@ -293,7 +299,7 @@
                                } else if (arg == 0) {
                                        // Unknown breakpoint, always stop.
                                } else if (step_over_breakpoint 
(TargetAddress.Null, TargetAddress.Null, false)) {
-                                       Report.Debug (DebugFlags.EventLoop,
+                                       Report.Debug (DebugFlags.SSE,
                                                      "{0} now stepping over 
breakpoint", this);
                                        return;
                                } else if (!child_breakpoint (arg)) {
@@ -302,8 +308,6 @@
                                        do_continue ();
                                        return;
                                }
-
-                               goto operation_finished;
                        }
 
                        if (temp_breakpoint_id != 0) {
@@ -311,21 +315,10 @@
                                              "{0} hit temporary breakpoint at 
{1}: {2}",
                                              this, inferior.CurrentFrame, 
message);
 
-                               if (!stop_requested &&
-                                   ((message != 
Inferior.ChildEventType.UNHANDLED_EXCEPTION) &&
-                                    (message != 
Inferior.ChildEventType.THROW_EXCEPTION) &&
-                                    (message != 
Inferior.ChildEventType.CHILD_CALLBACK) &&
-                                    (message != 
Inferior.ChildEventType.HANDLE_EXCEPTION))) {
-                                       inferior.Continue (); // do_continue ();
-                                       return;
-                               }
-
                                inferior.RemoveBreakpoint (temp_breakpoint_id);
                                temp_breakpoint_id = 0;
                        }
 
-                       bool exiting = false;
-
                        switch (message) {
                        case Inferior.ChildEventType.CHILD_STOPPED:
                                if (stop_requested || (arg != 0)) {
@@ -435,7 +428,7 @@
                        //
                        Operation new_operation = frame_changed (frame, 
current_operation);
                        if (new_operation != null) {
-                               Report.Debug (DebugFlags.EventLoop,
+                               Report.Debug (DebugFlags.SSE,
                                              "{0} frame changed at {1} => new 
operation {2}",
                                              this, frame, new_operation, 
message);
 
@@ -1010,11 +1003,12 @@
                {
                        check_inferior ();
                        int dr_index;
-                       Report.Debug (DebugFlags.SSE, "{0} inserting temp 
breakpoint at {1}",
-                                     this, address);
 
                        temp_breakpoint_id = inferior.InsertHardwareBreakpoint (
                                address, true, out dr_index);
+
+                       Report.Debug (DebugFlags.SSE, "{0} inserted temp 
breakpoint {1}:{2} at {3}",
+                                     this, temp_breakpoint_id, dr_index, 
address);
                }
 
                // <summary>
@@ -1206,7 +1200,7 @@
                void restore_stack (StackData stack)
                {
                        if (inferior.CurrentFrame != stack.Address) {
-                               Report.Debug (DebugFlags.EventLoop,
+                               Report.Debug (DebugFlags.SSE,
                                              "{0} discarding saved stack: 
stopped " +
                                              "at {1}, but recorded {2}", this,
                                              inferior.CurrentFrame, 
stack.Frame.TargetAddress);
@@ -1224,7 +1218,7 @@
                        current_frame = stack.Frame;
                        current_backtrace = stack.Backtrace;
                        registers = stack.Registers;
-                       Report.Debug (DebugFlags.EventLoop,
+                       Report.Debug (DebugFlags.SSE,
                                      "{0} restored stack: {1}", this, 
current_frame);
                }
 
@@ -1717,7 +1711,7 @@
                                return true;
 
                        default:
-                               throw new InternalError ();
+                               throw new InternalError ("FUCK: {0} {1}", this, 
result);
                        }
                }
 
@@ -1733,10 +1727,12 @@
                                if (result != EventResult.AskParent)
                                        return result;
 
+                               Operation old_child = child;
                                child = null;
 
-                               if (this is OperationCallback)
-                                       return EventResult.AskParent;
+                               Report.Debug (DebugFlags.EventLoop,
+                                             "{0} resending event {1} from {2} 
to {3}",
+                                             sse, cevent, old_child, this);
                        }
 
                        return DoProcessEvent (sse, inferior, cevent, out args);
@@ -1752,6 +1748,19 @@
                {
                        return true;
                }
+
+               protected virtual string MyToString ()
+               {
+                       return "";
+               }
+
+               public override string ToString ()
+               {
+                       if (child == null)
+                               return String.Format ("{0} ()", GetType 
().Name, MyToString ());
+                       else
+                               return String.Format ("{0}:{1}", GetType 
().Name, child);
+               }
        }
 
        protected class OperationInitialize : Operation
@@ -1817,12 +1826,14 @@
                                return;
                        }
 
-                       if (sse.current_method == null) {
+                       IMethod method = sse.Lookup (sse.inferior.CurrentFrame);
+
+                       if (method == null) {
                                sse.inferior.Step ();
                                return;
                        }
 
-                       ILanguageBackend language = 
sse.current_method.Module.LanguageBackend;
+                       ILanguageBackend language = 
method.Module.LanguageBackend;
 
                        int insn_size;
                        TargetAddress current_frame = sse.inferior.CurrentFrame;
@@ -1847,8 +1858,8 @@
                {
                        if (has_thread_lock) {
                                Report.Debug (DebugFlags.SSE,
-                                             "{0} stepped over breakpoint {1}: 
{2}",
-                                             sse, Index, 
sse.inferior.CurrentFrame);
+                                             "{0} releasing thread lock at 
{1}",
+                                             sse, sse.inferior.CurrentFrame);
 
                                sse.inferior.EnableBreakpoint (Index);
                                sse.manager.ReleaseGlobalThreadLock (sse);
@@ -1878,9 +1889,9 @@
                                                               
Inferior.ChildEvent cevent,
                                                               out 
TargetEventArgs args)
                {
-                       Report.Debug (DebugFlags.EventLoop,
-                                     "{0} stepped over breakpoint at {1}: {2} 
{3} {4}",
-                                     sse, inferior.CurrentFrame, Index, 
cevent, until);
+                       Report.Debug (DebugFlags.SSE,
+                                     "{0} stepped over breakpoint {1} at {2}: 
{3} {4}",
+                                     sse, Index, inferior.CurrentFrame, 
cevent, until);
 
                        if ((cevent.Type == 
Inferior.ChildEventType.CHILD_HIT_BREAKPOINT) &&
                            (cevent.Argument != Index)) {
@@ -2155,14 +2166,13 @@
                        return Step (sse, false);
                }
 
-               public override string ToString ()
+               protected override string MyToString ()
                {
-                       return String.Format ("OperationStep ({0}:{1})",
-                                             StepMode, StepFrame);
+                       return String.Format ("{0}:{1}", StepMode, StepFrame);
                }
        }
 
-       protected class OperationRun : OperationStepBase
+       protected class OperationRun : Operation
        {
                TargetAddress until;
                bool in_background;
@@ -2189,13 +2199,20 @@
                                sse.do_continue ();
                }
 
-               protected override bool DoProcessEvent (SingleSteppingEngine 
sse,
-                                                       Inferior inferior)
+               protected override EventResult DoProcessEvent 
(SingleSteppingEngine sse,
+                                                              Inferior 
inferior,
+                                                              
Inferior.ChildEvent cevent,
+                                                              out 
TargetEventArgs args)
                {
+                       args = null;
                        if (!until.IsNull && inferior.CurrentFrame == until)
-                               return true;
+                               return EventResult.Completed;
+                       Report.Debug (DebugFlags.EventLoop, "{0} received {1} 
at {2} in {3}",
+                                     sse, cevent, inferior.CurrentFrame, this);
+                       if (cevent.Type == 
Inferior.ChildEventType.CHILD_HIT_BREAKPOINT)
+                               return EventResult.Completed;
                        Execute (sse);
-                       return false;
+                       return EventResult.Running;
                }
 
                public override bool HandleException (SingleSteppingEngine sse,
@@ -2203,11 +2220,6 @@
                {
                        return false;
                }
-
-               protected override bool TrampolineHandler (IMethod method)
-               {
-                       return false;
-               }
        }
 
        protected class OperationFinish : OperationStepBase
@@ -2309,7 +2321,9 @@
 
                        args = null;
                        if (cevent.Type != 
Inferior.ChildEventType.CHILD_CALLBACK) {
-                               Abort ();
+                               Report.Debug (DebugFlags.SSE, "{0} aborting 
callback {1} at {2}: {3}",
+                                             sse, this, inferior.CurrentFrame, 
cevent);
+                               RestoreStack (sse);
                                return EventResult.CompletedCallback;
                        }
 
@@ -2329,7 +2343,7 @@
                out_frame_changed:
                        sse.frame_changed (inferior.CurrentFrame, null);
                        args = new TargetEventArgs (
-                               TargetEventType.FrameChanged, 
sse.current_frame);
+                               TargetEventType.TargetStopped, 0, 
sse.current_frame);
                        return EventResult.Completed;
                }
 
@@ -2435,7 +2449,7 @@
                                TargetAddress invoke = new TargetAddress (
                                        inferior.AddressDomain, data1);
 
-                               Report.Debug (DebugFlags.EventLoop,
+                               Report.Debug (DebugFlags.SSE,
                                              "Runtime invoke: {0}", invoke);
 
                                if (Debug)
@@ -2448,7 +2462,7 @@
                                return false;
                        }
 
-                       Report.Debug (DebugFlags.EventLoop,
+                       Report.Debug (DebugFlags.SSE,
                                      "Runtime invoke done: {0:x} {1:x}",
                                      data1, data2);
 
@@ -2475,6 +2489,34 @@
                        return true;
                }
 
+               protected override EventResult DoProcessEvent 
(SingleSteppingEngine sse,
+                                                              Inferior 
inferior,
+                                                              
Inferior.ChildEvent cevent,
+                                                              out 
TargetEventArgs args)
+               {
+                       if (Debug)
+                               return base.DoProcessEvent (sse, inferior, 
cevent, out args);
+
+                       if (cevent.Type == 
Inferior.ChildEventType.CHILD_HIT_BREAKPOINT) {
+                               Report.Debug (DebugFlags.SSE,
+                                             "{0} hit breakpoint {1} at {2} 
during runtime-invoke",
+                                             sse, cevent.Argument, 
inferior.CurrentFrame);
+                               sse.do_continue ();
+                               args = null;
+                               return EventResult.Running;
+                       } else if ((cevent.Type == 
Inferior.ChildEventType.CHILD_STOPPED) &&
+                                  (cevent.Argument == 0)) {
+                               Report.Debug (DebugFlags.SSE,
+                                             "{0} stopped at {1} during 
runtime-invoke",
+                                             sse, inferior.CurrentFrame);
+                               sse.do_continue ();
+                               args = null;
+                               return EventResult.Running;
+                       }
+
+                       return base.DoProcessEvent (sse, inferior, cevent, out 
args);
+               }
+
                public override bool HandleException (SingleSteppingEngine sse,
                                                      TargetAddress stack, 
TargetAddress exc)
                {
@@ -2536,7 +2578,7 @@
 
                        Result.Result = new TargetAddress 
(inferior.AddressDomain, data1);
 
-                       Report.Debug (DebugFlags.EventLoop,
+                       Report.Debug (DebugFlags.SSE,
                                      "{0} call method done: {1:x} {2:x}",
                                      sse, data1, data2);
                                
@@ -2547,21 +2589,23 @@
        protected class OperationCompileMethod : OperationCallback
        {
                public readonly TargetAddress CompileMethod;
-               public readonly TargetAddress Address;
+               public readonly TargetAddress MethodAddress;
                public readonly TrampolineHandler TrampolineHandler;
 
+               bool completed;
+
                public OperationCompileMethod (TargetAddress compile, 
TargetAddress address,
                                               TrampolineHandler handler)
                {
                        this.CompileMethod = compile;
-                       this.Address = address;
+                       this.MethodAddress = address;
                        this.TrampolineHandler = handler;
                }
 
                protected override void DoExecute (SingleSteppingEngine sse)
                {
-                       Report.Debug (DebugFlags.EventLoop, "{0} compiling 
method: {1}", sse, Address);
-                       sse.inferior.CallMethod (CompileMethod, 
Address.Address, 0, ID);
+                       Report.Debug (DebugFlags.SSE, "{0} compiling method: 
{1}", sse, MethodAddress);
+                       sse.inferior.CallMethod (CompileMethod, 
MethodAddress.Address, 0, ID);
                }
 
                protected override bool CallbackCompleted (SingleSteppingEngine 
sse,
@@ -2571,61 +2615,43 @@
                        TargetAddress address = new TargetAddress (
                                inferior.GlobalAddressDomain, data1);
 
-                       Report.Debug (DebugFlags.EventLoop, "{0} done compiling 
method: {1}",
+                       Report.Debug (DebugFlags.SSE, "{0} done compiling 
method: {1}",
                                      sse, address);
 
                        RestoreStack (sse);
-                       sse.PushOperation (new OperationMethodCompiled (this, 
address));
-                       return false;
-               }
+                       completed = true;
 
-               protected class OperationMethodCompiled : Operation
-               {
-                       public readonly OperationCompileMethod Parent;
-                       public readonly TargetAddress Address;
+                       IMethod method = sse.Lookup (address);
+                       Report.Debug (DebugFlags.SSE,
+                                     "{0} compiled method: {1} {2} {3} {4} 
{5}",
+                                     sse, address, method,
+                                     method != null ? method.Module : null,
+                                     SingleSteppingEngine.MethodHasSource 
(method),
+                                     TrampolineHandler);
 
-                       public OperationMethodCompiled (OperationCompileMethod 
parent,
-                                                       TargetAddress address)
-                       {
-                               this.Parent = parent;
-                               this.Address = address;
+                       if ((TrampolineHandler != null) && !TrampolineHandler 
(method)) {
+                               sse.do_next_native ();
+                               return false;
                        }
 
-                       public override bool IsSourceOperation {
-                               get { return true; }
-                       }
+                       Report.Debug (DebugFlags.SSE, "{0} entering trampoline: 
{1}",
+                                     sse, address);
 
-                       protected override void DoExecute (SingleSteppingEngine 
sse)
-                       {
-                               IMethod method = sse.Lookup (Address);
-                               Report.Debug (DebugFlags.SSE,
-                                             "{0} compiled method: {1} {2} {3} 
{4} {5}",
-                                             sse, Address, method,
-                                             method != null ? method.Module : 
null,
-                                             
SingleSteppingEngine.MethodHasSource (method),
-                                             Parent.TrampolineHandler);
+                       sse.do_continue (address, address);
+                       return false;
+               }
 
-                               if ((Parent.TrampolineHandler != null) &&
-                                   !Parent.TrampolineHandler (method)) {
-                                       sse.do_next_native ();
-                                       return;
-                               }
+               protected override EventResult DoProcessEvent 
(SingleSteppingEngine sse,
+                                                              Inferior 
inferior,
+                                                              
Inferior.ChildEvent cevent,
+                                                              out 
TargetEventArgs args)
+               {
+                       if (!completed)
+                               return base.DoProcessEvent (sse, inferior, 
cevent, out args);
 
-                               Report.Debug (DebugFlags.SSE,
-                                             "{0} entering trampoline: {1}",
-                                             sse, Address);
 
-                               sse.do_continue (Address, Address);
-                       }
-
-                       protected override EventResult DoProcessEvent 
(SingleSteppingEngine sse,
-                                                                      Inferior 
inferior,
-                                                                      
Inferior.ChildEvent cevent,
-                                                                      out 
TargetEventArgs args)
-                       {
-                               args = null;
-                               return EventResult.AskParent;
-                       }
+                       args = null;
+                       return EventResult.AskParent;
                }
        }
 
@@ -2735,7 +2761,7 @@
                protected override bool DoProcessEvent (SingleSteppingEngine 
sse, Inferior inferior)
                {
                        TargetAddress current_frame = inferior.CurrentFrame;
-                       Report.Debug (DebugFlags.EventLoop, "{0} wrapper 
stopped at {1} ({2}:{3})",
+                       Report.Debug (DebugFlags.SSE, "{0} wrapper stopped at 
{1} ({2}:{3})",
                                      sse, current_frame, method.StartAddress, 
method.EndAddress);
                        if ((current_frame < method.StartAddress) || 
(current_frame > method.EndAddress))
                                return true;
@@ -2811,7 +2837,7 @@
        }
 
        [Serializable]
-       internal struct RuntimeInvokeResult
+       internal class RuntimeInvokeResult
        {
                public ITargetObject ReturnObject;
                public string ExceptionMessage;

Modified: trunk/debugger/test/TestBreakpoint.cs
===================================================================
--- trunk/debugger/test/TestBreakpoint.cs       2005-09-23 14:18:15 UTC (rev 
50576)
+++ trunk/debugger/test/TestBreakpoint.cs       2005-09-23 15:16:31 UTC (rev 
50577)
@@ -7,6 +7,13 @@
 
        public class Hello
        {
+               protected Trier trier;
+
+               public Hello ()
+               {
+                       trier = new Trier ();
+               }
+
                public static void World (Picture picture)
                {
                        Console.WriteLine (picture);
@@ -14,11 +21,16 @@
 
                public void Test ()
                {
-                       Trier trier = new Trier ();
                        World (trier.PortaNigra);
                        World (trier.CityCenter);
                        World (Trier.RomanBaths);
                }
+
+               public Trier Trier {
+                       get {
+                               return trier;
+                       }
+               }
        }
 }
 
@@ -83,5 +95,6 @@
        {
                Martin.Baulig.Hello hello = new Martin.Baulig.Hello ();
                hello.Test ();
+               Console.WriteLine (hello);
        }
 }

Modified: trunk/debugger/test/mono-debugger.tests/TestBreakpoint.exp
===================================================================
--- trunk/debugger/test/mono-debugger.tests/TestBreakpoint.exp  2005-09-23 
14:18:15 UTC (rev 50576)
+++ trunk/debugger/test/mono-debugger.tests/TestBreakpoint.exp  2005-09-23 
15:16:31 UTC (rev 50577)
@@ -3,15 +3,20 @@
 
 source $srcdir/mdb.exp
 
-set line_world 12
-set line_test 18
-set line_test_2 19
-set line_test_3 20
-set line_porta_nigra 61
-set line_roman_baths 73
-set line_main 84
+set line_world 19
+set line_test 24
+set line_test_2 25
+set line_test_3 26
+set line_porta_nigra 73
+set line_roman_baths 85
+set line_main 96
+set line_main_2 98
 set file $srcdir/TestBreakpoint.cs
 
+set porta_nigra_url "http://de.wikipedia.org/wiki/Bild:Porta_Nigra_Trier.jpg";
+set city_center_url "http://de.wikipedia.org/wiki/Bild:Trier_Innenstadt.jpg";
+set roman_baths_url 
"http://de.wikipedia.org/wiki/Bild:Trier_roman_baths_DSC02378.jpg";;
+
 mdb_start "TestBreakpoint.exe"
 mdb_expect_frame 0 "X.Main()" $file $line_main
 
@@ -23,6 +28,8 @@
 set bpt_3 [mdb_expect_breakpoint]
 mdb_send "break Martin.Baulig.Hello.World"
 set bpt_world [mdb_expect_breakpoint]
+mdb_send "break $line_main_2"
+set bpt_main_2 [mdb_expect_breakpoint]
 
 mdb_send "continue"
 mdb_expect_hit_breakpoint 0 "Martin.Baulig.Hello.Test()" $bpt_1 $file 
$line_test
@@ -42,18 +49,26 @@
 mdb_expect_prompt
 
 mdb_send "continue"
-mdb_expect_line "http://de.wikipedia.org/wiki/Bild:Porta_Nigra_Trier.jpg";
+mdb_expect_line $porta_nigra_url
 mdb_expect_hit_breakpoint 0 "Martin.Baulig.Hello.Test()" $bpt_2 $file 
$line_test_2
 # We are stopped on a breakpoint and use "next" to step over it
 mdb_send "next"
-mdb_expect_line "http://de.wikipedia.org/wiki/Bild:Trier_Innenstadt.jpg";
+mdb_expect_line $city_center_url
 mdb_expect_hit_breakpoint 0 "Martin.Baulig.Hello.Test()" $bpt_3 $file 
$line_test_3
 # We are stopped on a breakpoint and use "step" to step over it
 mdb_send "step"
 mdb_expect_stopped 0 "Europe.Germany.Trier.get_RomanBaths()" $file 
$line_roman_baths
 
 mdb_send "continue"
-mdb_expect_line 
"http://de.wikipedia.org/wiki/Bild:Trier_roman_baths_DSC02378.jpg";;
+mdb_expect_line $roman_baths_url
+
+mdb_expect_hit_breakpoint 0 "X.Main()" $bpt_main_2 $file $line_main_2
+# We still have a breakpoint in Europe.Germany.Trier.PortaNigra's property 
getter while
+# we're runtime-invoke'ing it.
+mdb_send_and_expect "p hello.Trier.PortaNigra.URL" "(System.String) 
\"$porta_nigra_url\""
+
+mdb_send "continue"
+mdb_expect_line "Martin.Baulig.Hello"
 mdb_expect_line "Process @4 terminated normally."
 mdb_expect_prompt
 mdb_send "quit"

_______________________________________________
Mono-patches maillist  -  Mono-patches@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to