@@ -283,8 +283,9 @@ private async void OnStopped(Results results)
283283 results = results . Add ( "frame" , frameResult . Find ( "frame" ) ) ;
284284 }
285285
286- bool fIsAsyncBreak = MICommandFactory . IsAsyncBreakSignal ( results ) ;
287- if ( await DoInternalBreakActions ( fIsAsyncBreak ) )
286+ AsyncBreakSignal signal = MICommandFactory . GetAsyncBreakSignal ( results ) ;
287+ bool isAsyncBreak = signal == AsyncBreakSignal . SIGTRAP || ( IsUsingExecInterrupt && signal == AsyncBreakSignal . SIGINT ) ;
288+ if ( await DoInternalBreakActions ( isAsyncBreak ) )
288289 {
289290 return ;
290291 }
@@ -409,6 +410,8 @@ private async Task<bool> DoInternalBreakActions(bool fIsAsyncBreak)
409410 {
410411 CmdContinueAsync ( ) ;
411412 processContinued = true ;
413+ // Reset since this -exec-interrupt was for an internal breakpoint.
414+ IsUsingExecInterrupt = false ;
412415 }
413416
414417 if ( firstException != null )
@@ -591,7 +594,7 @@ internal bool IsLocalGdbTarget()
591594 _launchOptions is LocalLaunchOptions && ! IsLocalLaunchUsingServer ( ) ) ;
592595 }
593596
594- private bool IsRemoteGdbTarget ( )
597+ internal bool IsRemoteGdbTarget ( )
595598 {
596599 return MICommandFactory . Mode == MIMode . Gdb &&
597600 ( _launchOptions is PipeLaunchOptions || _launchOptions is UnixShellPortLaunchOptions ||
@@ -606,6 +609,11 @@ protected bool IsCoreDump
606609 }
607610 }
608611
612+ /// <summary>
613+ /// Flag to indicate that '-exec-interrupt' was used for async-break scenarios.
614+ /// </summary>
615+ public bool IsUsingExecInterrupt { get ; protected set ; } = false ;
616+
609617 public async Task < Results > CmdTerminate ( )
610618 {
611619 if ( ! _terminating )
@@ -749,6 +757,7 @@ public Task CmdBreakInternal()
749757 }
750758 }
751759
760+ IsUsingExecInterrupt = true ;
752761 var res = CmdAsync ( "-exec-interrupt" , ResultClass . done ) ;
753762 return res . ContinueWith ( ( t ) =>
754763 {
0 commit comments