Skip to content

Commit

Permalink
[wasm][debugger] Reverting the old behavior of scope id numeration (#…
Browse files Browse the repository at this point in the history
…59368)

* Keeping the old behavior of scope id what we have before start using debugger-agent.

* Fix compilation.

* Fix compilation.
  • Loading branch information
thaystg authored Sep 21, 2021
1 parent b72cd48 commit f697235
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/mono/mono/component/debugger-agent.c
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,9 @@ static int objref_id = 0;

static int event_request_id = 0;

#ifndef TARGET_WASM
static int frame_id = 0;
#endif

static GPtrArray *event_requests;

Expand Down Expand Up @@ -3024,7 +3026,7 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls, gboolean f
{
ComputeFramesUserData user_data;
GSList *tmp;
int i, findex, new_frame_count;
int findex, new_frame_count;
StackFrame **new_frames, *f;
MonoUnwindOptions opts = (MonoUnwindOptions)(MONO_UNWIND_DEFAULT | MONO_UNWIND_REG_LOCATIONS);

Expand Down Expand Up @@ -3083,6 +3085,8 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls, gboolean f
for (tmp = user_data.frames; tmp; tmp = tmp->next) {
f = (StackFrame *)tmp->data;

#ifndef TARGET_WASM
int i;
/*
* Reuse the id for already existing stack frames, so invokes don't invalidate
* the still valid stack frames.
Expand All @@ -3096,7 +3100,9 @@ compute_frame_info (MonoInternalThread *thread, DebuggerTlsData *tls, gboolean f

if (i >= tls->frame_count)
f->id = mono_atomic_inc_i32 (&frame_id);

#else //keep the same behavior that we have for wasm before start using debugger-agent
f->id = findex+1;
#endif
new_frames [findex ++] = f;
}

Expand Down
20 changes: 20 additions & 0 deletions src/mono/wasm/debugger/DebuggerTestSuite/SteppingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -928,5 +928,25 @@ await EvaluateAndCheck(
await StepAndCheck(StepKind.Over, "dotnet://debugger-test.dll/debugger-test.cs", 719, 8, "MoveNext");
await StepAndCheck(StepKind.Over, "dotnet://debugger-test.dll/debugger-test.cs", 720, 4, "MoveNext");
}

[Fact]
public async Task CheckResetFrameNumberForEachStep()
{
var bp_conditional = await SetBreakpointInMethod("debugger-test.dll", "SteppingInto", "MethodToStep", 1);
await EvaluateAndCheck(
"window.setTimeout(function() { invoke_static_method('[debugger-test] SteppingInto:MethodToStep'); }, 1);",
"dotnet://debugger-test.dll/debugger-test.cs",
bp_conditional.Value["locations"][0]["lineNumber"].Value<int>(),
bp_conditional.Value["locations"][0]["columnNumber"].Value<int>(),
"MethodToStep"
);
var pause_location = await StepAndCheck(StepKind.Into, "dotnet://debugger-test.dll/debugger-test.cs", 799, 4, "Increment");
pause_location = await StepAndCheck(StepKind.Over, "dotnet://debugger-test.dll/debugger-test.cs", 800, 8, "Increment");
Assert.Equal(pause_location["callFrames"][0]["callFrameId"], "dotnet:scope:1");
pause_location = await StepAndCheck(StepKind.Over, "dotnet://debugger-test.dll/debugger-test.cs", 801, 8, "Increment");
Assert.Equal(pause_location["callFrames"][0]["callFrameId"], "dotnet:scope:1");
pause_location = await StepAndCheck(StepKind.Over, "dotnet://debugger-test.dll/debugger-test.cs", 806, 8, "Increment");
Assert.Equal(pause_location["callFrames"][0]["callFrameId"], "dotnet:scope:1");
}
}
}
25 changes: 25 additions & 0 deletions src/mono/wasm/debugger/tests/debugger-test/debugger-test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -782,3 +782,28 @@ public static void LoopToBreak()
}
}

public class SteppingInto
{
static int currentCount = 0;
static MyIncrementer incrementer = new MyIncrementer();
public static void MethodToStep()
{
currentCount = incrementer.Increment(currentCount);
}
}

public class MyIncrementer
{
private Func<DateTime> todayFunc = () => DateTime.Now;

public int Increment(int count)
{
var today = todayFunc();
if (today.DayOfWeek == DayOfWeek.Sunday)
{
return count + 2;
}

return count + 1;
}
}

0 comments on commit f697235

Please sign in to comment.