2017-08-11 3 views
0

J'ai un grand processus que j'ai besoin de déboguer et le processus pourrait s'arrêter à tout moment. J'ai configuré Visual Studio 2017, pour arrêter à toute exception levée, comme dans, même si elle est gérée, parce que je veux voir ce qui a causé l'exception. Ce dont j'ai besoin, c'est d'une sorte d'alarme quand cela se produit, pour que je puisse quitter le programme et m'alerter si quelque chose se présente. La seule chose que j'ai trouvée est un son d'alarme quand un point de coup est touché, mais ce n'est peut-être pas un point de rupture et j'ai besoin de plus qu'un son, j'ai besoin d'être capable d'exécuter du code. devenir fou ou autre chose. Est-il possible de déclencher le code lorsque le débogueur entre en mode pause?Est-il possible d'exécuter du code lorsque Visual Studio passe en mode pause?

Merci d'avance.

Répondre

0

C'est, en utilisant un paquet VS. Vous aurez besoin d'ajouter cet attribut au-dessus de la classe pour que le code pour exécuter au démarrage du package:

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

Ajouter ces variables valeurs de classe:

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

alors le code suivant peut exécuter:

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

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

      SetupEventHandlers(); 
     } 

Et enfin le code que nous avons "tout" étant en attente de:

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; 
     }