2017-05-30 5 views
2

Je me suis retrouvé dans ce même problème que here, j'utilise Windows Forms dans une DLL (c'est pour un plugin Autocad) et je ne peux pas déboguer mon code parce que je reçois "Le l'application est en mode pause, votre application est entrée dans un état de pause, mais aucun code en cours d'exécution n'est pris en charge par le moteur de débogage sélectionné ". J'ai essayé toutes les recommandations dans this list et aucun n'a fonctionné pour moi. Une chose étrange était que je peux casser dans le constructeur mais les événements qui utilisent un objet controller/config obtiennent cette page.L'application est en mode pause.

Des idées pour lesquelles cela pourrait se produire?

grâce à l'avance

+0

N'existe-t-il aucun filetage? –

+0

Pas encore, il existe une méthode qui fera des appels asynchrones à un serveur web à un moment donné, mais à l'heure actuelle est juste un couple de formes qui utilisent un contrôleur pour accéder à certaines données dans une base de données locale avec EF. Mais la page apparaît sur chaque événement dans le formulaire. – user3223834

+0

La plupart des suggestions sont là où j'aurais commencé. Aussi, n'est-il pas ouvert deux fois (ou sur un autre PC). Assurez-vous et exécutez un "Clean" sous build - et assurez-vous que le processus n'est pas démarré plusieurs fois. Assurez-vous également que votre build est valide, c'est-à-dire que vous n'avez pas dit "compile error - continue avec old build", etc. –

Répondre

1

J'ai jamais travaillé avec Autocad mais j'ai fait quelques plugins pour Solidworks et pour Creo Parametrics. Voici ce que je fais habituellement quand mon point d'arrêt ne fonctionne pas:

  1. Assurez-vous que l'onglet de construction des paramètres du projet

    • constante DEBUG est
    • informations déboguage à plein
    • optimisé le code est désactivé
  2. Pour le code en question, ajoutez System.Diagnostics.Trace.WriteLine("something unique"); et exécutez-le sans studio visuel attaché pour s'assurer que votre code est effectivement appelé. Vérifiez auprès de DebugView utility à partir de sys internals.

  3. Assurez-vous que la copie à droite de votre dll est chargé:
    1. votre solution de Run Visual Studio comme vous le faites habituellement
    2. Vérifiez si vous êtes attaché au processus droit.
    3. Effectuez des actions dans Autocad qui déclenchent votre code.
    4. Cliquez sur le bouton Pause Tous dans la barre d'outils de débogage dans VS
    5. Ouvrir Debug-> Windows-> Modules fenêtre et assurez-vous que votre dll est présent dans la liste, le chemin est correct et il y a fichier pdb pour votre dll juste à côté il.
  4. Ajouter les appels à System.Diagnostics.Debugger.Launch(); et System.Diagnostics.Debugger.Break(); à votre code.

J'espère que cela aide, faites-moi savoir si vous avez besoin de clarifications pour l'une des étapes.

2

Dans mon cas, je recevais ce même message lors de l'appel d'un point de terminaison d'API MVC et il lançait également une exception de dépassement de capacité de pile. La cause était une propriété d'objet dans une DLL externe qui a été écrite avec un champ de support. L'accesseur set de la propriété a été accidentellement écrit pour définir la propriété et non le backing field qui a provoqué une boucle infinie, d'où l'exception de dépassement de pile. Notez le trait de soulignement manquant dans le setter. Bien que votre problème ne soit pas exactement comme le mien, quelque chose de semblable se produit dans une DLL externe.