@@ -602,6 +602,9 @@ void ConnectionStarted (VirtualMachine machine)
602602 machine . EnableEvents ( EventType . TypeLoad ) ;
603603 }
604604
605+
606+ machine . EnableEvents ( EventType . MethodUpdate ) ;
607+
605608 started = true ;
606609
607610 /* Wait for the VMStart event */
@@ -1347,6 +1350,17 @@ void InsertBreakpoint (Breakpoint bp, BreakInfo bi)
13471350 InsertBreakpoint ( bp , bi , bi . Location . Method , bi . Location . ILOffset ) ;
13481351 }
13491352
1353+ void UpdateBreakpoint ( Breakpoint bp , BreakInfo bi )
1354+ {
1355+ foreach ( var req in bi . Requests )
1356+ {
1357+ req . Key . Disable ( ) ;
1358+ var request = vm . SetBreakpoint ( bi . Location . Method , bi . Location . ILOffset ) ;
1359+ req . Key . UpdateReqId ( request . GetId ( ) ) ;
1360+ req . Key . Enabled = bp . Enabled ;
1361+ }
1362+ }
1363+
13501364 void InsertBreakpoint ( Breakpoint bp , BreakInfo bi , MethodMirror method , int ilOffset )
13511365 {
13521366 EventRequest request ;
@@ -1858,6 +1872,9 @@ void HandleEventSet (EventSet es)
18581872 case EventType . UserLog :
18591873 HandleUserLogEvents ( Array . ConvertAll ( es . Events , item => ( UserLogEvent ) item ) ) ;
18601874 break ;
1875+ case EventType . MethodUpdate :
1876+ HandleMethodUpdateEvents ( Array . ConvertAll ( es . Events , item => ( MethodUpdateEvent ) item ) ) ;
1877+ break ;
18611878 default :
18621879 DebuggerLoggingService . LogMessage ( "Ignoring unknown debugger event type {0}" , type ) ;
18631880 break ;
@@ -2391,6 +2408,22 @@ void HandleUserLogEvents (UserLogEvent[] events)
23912408 OnTargetDebug ( ul . Level , ul . Category , ul . Message ) ;
23922409 }
23932410
2411+ void HandleMethodUpdateEvents ( MethodUpdateEvent [ ] methods )
2412+ {
2413+ foreach ( var method in methods )
2414+ {
2415+ foreach ( var bp in breakpoints ) {
2416+ if ( bp . Value . Location . Method . GetId ( ) == method . GetMethod ( ) . GetId ( ) )
2417+ {
2418+ bool dummy = false ;
2419+ var l = FindLocationByMethod ( bp . Value . Location . Method , bp . Value . Location . SourceFile , bp . Value . Location . LineNumber , bp . Value . Location . ColumnNumber , ref dummy ) ;
2420+ bp . Value . Location = l ;
2421+ UpdateBreakpoint ( ( Breakpoint ) bp . Value . BreakEvent , bp . Value ) ;
2422+ }
2423+ }
2424+ }
2425+ }
2426+
23942427 public ObjectMirror GetExceptionObject ( ThreadMirror thread )
23952428 {
23962429 ObjectMirror obj ;
0 commit comments