}
[Test]
+ [Category ("NotWorking")] // https://bugzilla.xamarin.com/show_bug.cgi?id=44974
public void SingleStepping () {
Event e = run_until ("single_stepping");
req.Disable ();
}
+ [Test]
+ public void SingleSteppingNoFrames () {
+ //
+ // Test what happens when starting a single step operation on a thread
+ // with no managed frames
+ //
+ // Run a delegate on a tp thread
+ var e = run_until ("ss_no_frames_2");
+
+ var this_type = e.Thread.GetFrames ()[0].Method.DeclaringType;
+ this_type.SetValue (this_type.GetField ("static_i"), vm.CreateValue (56));
+
+ var thread = e.Thread;
+ var e2 = run_until ("ss_no_frames_3");
+ // The tp thread should be idle now
+ step_req = vm.CreateStepRequest (thread);
+ step_req.Depth = StepDepth.Over;
+ AssertThrows<Exception> (delegate {
+ step_req.Enable ();
+ });
+ }
+
[Test]
public void MethodEntryExit () {
run_until ("single_stepping");
vm.Resume ();
e = GetNextEvent ();
if (e is AssemblyUnloadEvent) {
+ AssertThrows<Exception> (delegate () {
+ var assembly_obj = (e as AssemblyUnloadEvent).Assembly.GetAssemblyObject ();
+ });
continue;
} else {
break;
req.Disable ();
var frames = e.Thread.GetFrames ();
var locs = frames [0].Method.Locations;
- var next_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber + 2));
+
+ var next_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber + 3));
e.Thread.SetIP (next_loc);
req.Disable ();
var frames = e.Thread.GetFrames ();
var locs = frames [0].Method.Locations;
- var prev_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber - 3));
+ var prev_loc = locs.First (l => (l.LineNumber == frames [0].Location.LineNumber - 1));
AssertValue (2, frames [0].GetValue (frames [0].Method.GetLocal ("i")));
// Set back the ip to the first i ++; line