2017-08-11 97 views
0

我有一個大的過程,我需要調試,並可以在任何時候停止進程。我已經配置了Visual Studio 2017,在任何拋出的異常處停止,即使它處理了,因爲我想查看是什麼導致了異常。當發生這種情況時,我需要的是某種警報,以便我可以離開程序運行,然後在出現任何問題時提醒我。我發現的唯一的事情就是在發生斷點時發出警報聲,但它可能不是一個斷點,我需要的不僅僅是聲音,我需要能夠執行一些代碼,以便讓我的電話堅果或任何東西。當調試器進入中斷模式時,有什麼方法可以觸發代碼?visual studio進入中斷模式時是否可以執行一些代碼?

在此先感謝。

回答

0

它是,使用VS包。你需要爲了增加在類的頂部此屬性爲代碼在包啓動時運行:

[ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids80.SolutionExists)] ///Able to run code on solution startup 

添加這些類值的變量:

private DTE2 applicationObject; 
private BuildEvents buildEvents; 
private DebuggerEvents debugEvents; 

然後將以下代碼可以運行:

protected override void Initialize() 
{ 
      base.Initialize(); 

      applicationObject = (DTE2)GetService(typeof(DTE)); 
      buildEvents = applicationObject.Events.BuildEvents; 
      debugEvents = applicationObject.Events.DebuggerEvents; 

      SetupEventHandlers(); 
     } 

最後我們的代碼 「全」 是等待:

private void SetupEventHandlers() 
     { 
      //buildEvents.OnBuildDone += (scope, action) => 
      //{ 

      //}; 

      debugEvents.OnEnterBreakMode += delegate (dbgEventReason reason, ref dbgExecutionAction action) 
      { 

      }; 

      //var componentModel = 
      // GetGlobalService(typeof(SComponentModel)) as IComponentModel; 
      //if (componentModel == null) 
      //{ 
      // Debug.WriteLine("componentModel is null"); 
      // return; 
      //} 
      //var operationState = componentModel.GetService<IOperationState>(); 
      //operationState.StateChanged += OperationStateOnStateChanged; 
     } 
相關問題