From 696906bc3d564938b363acbd099717e7d8574126 Mon Sep 17 00:00:00 2001 From: Thays Date: Thu, 5 Nov 2020 12:33:45 -0300 Subject: [PATCH 1/3] Implementing support to Debugger::Break. --- src/mono/mono/mini/mini-wasm-debugger.c | 7 +++++++ src/mono/mono/mini/mini-wasm.h | 1 + .../wasm/debugger/DebuggerTestSuite/Tests.cs | 20 +++++++++++++++++-- .../tests/debugger-test/debugger-test2.cs | 9 ++++++++- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/mono/mono/mini/mini-wasm-debugger.c b/src/mono/mono/mini/mini-wasm-debugger.c index c760d220466187..b547014b74b9e2 100644 --- a/src/mono/mono/mini/mini-wasm-debugger.c +++ b/src/mono/mono/mini/mini-wasm-debugger.c @@ -416,6 +416,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 @@ -626,6 +627,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) { diff --git a/src/mono/mono/mini/mini-wasm.h b/src/mono/mono/mini/mini-wasm.h index cdc5e8131e3411..fc488171438609 100644 --- a/src/mono/mono/mini/mini-wasm.h +++ b/src/mono/mono/mini/mini-wasm.h @@ -111,5 +111,6 @@ 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); #endif /* __MONO_MINI_WASM_H__ */ diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs index 99e5a94e8ca7cd..34a769e3e5e515 100644 --- a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs +++ b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs @@ -1984,10 +1984,9 @@ async Task LoadAssemblyDynamically(string asm_file, string pdb_file) } [Fact] - public async Task StepOverHiddenSequencePoint() + public async Task BreakOnDebuggerBreak() { var insp = new Inspector(); - //Collect events var scripts = SubscribeToScripts(insp); @@ -1996,6 +1995,23 @@ 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"); + }); + } + + [Fact] + public async Task StepOverHiddenSequencePoint() + { + var insp = new Inspector(); + + var scripts = SubscribeToScripts(insp); + + await Ready(); + await insp.Ready(async (cli, token) => + { var bp = await SetBreakpointInMethod("debugger-test.dll", "HiddenSequencePointTest", "StepOverHiddenSP2", 0); var pause_location = await EvaluateAndCheck( diff --git a/src/mono/wasm/debugger/tests/debugger-test/debugger-test2.cs b/src/mono/wasm/debugger/tests/debugger-test/debugger-test2.cs index 7275bf4a2f10e8..b9d97c8e23484b 100644 --- a/src/mono/wasm/debugger/tests/debugger-test/debugger-test2.cs +++ b/src/mono/wasm/debugger/tests/debugger-test/debugger-test2.cs @@ -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 static void Types() var d = usMin + usMax; } } + +public class UserBreak { + public static void BreakOnDebuggerBreakCommand() + { + Debugger.Break(); + } +} From d2edcb387dd25dcd48b0be130a66120a0f801638 Mon Sep 17 00:00:00 2001 From: Larry Ewing Date: Fri, 20 Nov 2020 17:33:31 -0600 Subject: [PATCH 2/3] Fix fix backport --- src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs index 34a769e3e5e515..62c995cb63f713 100644 --- a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs +++ b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs @@ -1994,7 +1994,6 @@ public async Task BreakOnDebuggerBreak() 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, @@ -2006,12 +2005,14 @@ await EvaluateAndCheck( public async Task StepOverHiddenSequencePoint() { 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); + var bp = await SetBreakpointInMethod("debugger-test.dll", "HiddenSequencePointTest", "StepOverHiddenSP2", 0); var pause_location = await EvaluateAndCheck( From 68cdc18fe779a1bdb5e1969978e5c0f89d8f19d8 Mon Sep 17 00:00:00 2001 From: Larry Ewing Date: Fri, 20 Nov 2020 18:34:08 -0600 Subject: [PATCH 3/3] Fix the line number of the break command --- src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs index 62c995cb63f713..4a79ba729007cb 100644 --- a/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs +++ b/src/mono/wasm/debugger/DebuggerTestSuite/Tests.cs @@ -1996,7 +1996,7 @@ 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, + "dotnet://debugger-test.dll/debugger-test2.cs", 54, 4, "BreakOnDebuggerBreakCommand"); }); }