static int event_request_id = 0;
+#ifndef TARGET_WASM
static int frame_id = 0;
+#endif
static GPtrArray *event_requests;
{
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);
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.
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;
}
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");
+ }
}
}
}
}
+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;
+ }
+}