public void VerySimpleTest() { string sql = @"create procedure spTest() begin declare n int; set n = 1; while n < 5 do begin set n = n + 1; end; end while; end; "; Debugger dbg = new Debugger(); try { dbg.SqlInput = sql; dbg.Connection = new MySqlConnection(TestUtils.CONNECTION_STRING); dbg.UtilityConnection = new MySqlConnection(TestUtils.CONNECTION_STRING); dbg.LockingConnection = new MySqlConnection(TestUtils.CONNECTION_STRING); DumpConnectionThreads(dbg); MySqlScript script = new MySqlScript(dbg.Connection, string.Format( "delimiter // drop procedure if exists spTest; {0} //", sql )); script.Execute(); Watch w = dbg.SetWatch("n"); dbg.SetBreakpoint( sql, 8); dbg.SetBreakpoint( sql, 13); dbg.SteppingType = SteppingTypeEnum.StepInto; bool bpHit = false; int i = 0; dbg.OnBreakpoint += (bp) => { bpHit = true; int val = 0; if (bp.Line == 8 || bp.Line == 13) { val = Convert.ToInt32(w.Eval()); } if (bp.Line == 8) { Assert.AreEqual(++i, val); Debug.Write(val); Debug.WriteLine(" within simpleproc"); } else if (bp.Line == 13) { Assert.AreEqual( 5, val ); Debug.Write(val); Debug.WriteLine(" within simpleproc"); } }; dbg.Run(new string[0]); Assert.IsTrue(bpHit); } finally { dbg.RestoreRoutinesBackup(); } }