Implementing support to Debugger::Break. (#44305)
authorThays Grazia <thaystg@gmail.com>
Thu, 5 Nov 2020 22:06:58 +0000 (19:06 -0300)
committerGitHub <noreply@github.com>
Thu, 5 Nov 2020 22:06:58 +0000 (16:06 -0600)
src/mono/mono/mini/mini-wasm-debugger.c
src/mono/mono/mini/mini-wasm.h
src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs
src/mono/wasm/debugger/tests/debugger-test/debugger-test2.cs

index 15951e1..9ac0eb6 100644 (file)
@@ -444,6 +444,7 @@ mono_wasm_debugger_init (void)
        objrefs = g_hash_table_new_full (NULL, NULL, NULL, mono_debugger_free_objref);
 
        mini_get_dbg_callbacks ()->handle_exception = handle_exception;
+       mini_get_dbg_callbacks ()->user_break = mono_wasm_user_break;
 }
 
 MONO_API void
@@ -663,6 +664,12 @@ mono_wasm_breakpoint_hit (void)
        // mono_wasm_fire_bp ();
 }
 
+void
+mono_wasm_user_break (void)
+{
+       mono_wasm_fire_bp ();
+}
+
 EMSCRIPTEN_KEEPALIVE int
 mono_wasm_current_bp_id (void)
 {
index ac35ed3..26a97ff 100644 (file)
@@ -111,6 +111,7 @@ void mono_wasm_set_timeout (int timeout, int id);
 
 void mono_wasm_single_step_hit (void);
 void mono_wasm_breakpoint_hit (void);
+void mono_wasm_user_break (void);
 
 int mono_wasm_assembly_already_added (const char *assembly_name);
 
index c53a60b..2ac3cb6 100644 (file)
@@ -1158,6 +1158,23 @@ namespace DebuggerTests
             Assert.True(load_assemblies_res.IsOk);
         }
 
+        [Fact]
+        public async Task BreakOnDebuggerBreak()
+        {
+            var insp = new Inspector();
+            //Collect events
+            var scripts = SubscribeToScripts(insp);
+
+            await Ready();
+            await insp.Ready(async (cli, token) =>
+            {
+                ctx = new DebugTestContext(cli, insp, token, scripts);
+                await EvaluateAndCheck(
+                    "window.setTimeout(function() { invoke_static_method_async('[debugger-test] UserBreak:BreakOnDebuggerBreakCommand'); }, 1);",
+                    "dotnet://debugger-test.dll/debugger-test2.cs", 56, 4,
+                    "BreakOnDebuggerBreakCommand");
+            });
+        }
         //TODO add tests covering basic stepping behavior as step in/out/over
     }
 }
index 7275bf4..b9d97c8 100644 (file)
@@ -2,7 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 
 using System;
-
+using System.Diagnostics;
 public class Misc
 { //Only append content to this class as the test suite depends on line info
     public static int CreateObject(int foo, int bar)
@@ -49,3 +49,10 @@ public class Fancy
         var d = usMin + usMax;
     }
 }
+
+public class UserBreak {
+    public static void BreakOnDebuggerBreakCommand()
+    {
+        Debugger.Break();
+    }
+}