Impossible de déboguer Esri Addin pour ArcCatalog


8

C'était un tirage au sort que cette question soit une question GIS.SE ou StackOverflow ... Je vais avec GIS.SE parce que le problème semble résider avec ArcCatalog.

J'ai plusieurs compléments qui ont été écrits pour ArcCatalog (et aussi ArcMap); auparavant, je pouvais F5 déboguer le code en utilisant des points d'arrêt maintenant tous mes points d'arrêt sont inactifs avec le message Le point d'arrêt ne sera pas actuellement atteint. Aucun symbole n'a été chargé pour ce document :

entrez la description de l'image ici

J'ai essayé les suggestions de Stack Overflow:

Correction «Le point d'arrêt ne sera pas atteint actuellement. Aucun symbole n'a été chargé pour ce document. ”

Ce point d'arrêt ne sera pas atteint actuellement, le code source est différent de l'original (même après nettoyage / reconstruction)

Le point d'arrêt ne sera pas atteint actuellement. Aucun symbole n'a été chargé pour ce document

et aussi

Pourquoi le point d'arrêt ne peut-il pas être "atteint" lors du débogage d'un complément ArcGIS 10? mais cela semble être un problème différent.

Comme il s'agit d'un complément (dll), il n'y a donc pas de projet de démarrage. J'ai nettoyé toutes les autres versions. J'ai apporté une modification subtile au fichier Esriaddinx dans le message=pour confirmer que les modifications étaient en cours - tout va bien, il n'y a pas de version plus ancienne.

Pendant le nettoyage, j'ai remarqué que les compléments pour ArcCatalog sont copiés %USERPROFILE%\Documents\ArcGIS\AddIns\Desktop10.X\{AddInID}\là où les compléments ArcMap ne sont pas .. J'ai essayé de copier le fichier pdb dans le dossier des compléments mais il semble que le code ne soit plus débogué et ArcCatalog a basculé / redirigé vers la copie.

Existe-t-il un moyen de déboguer avec des compléments de points d'arrêt pour ArcCatalog? Notez que les compléments ArcMap et les applications autonomes déboguent très bien.

Environnement:

  • Windows 7 64 bits
  • ArcGis 10.1
  • Visual Studio 2010 Professional (VB.net et C #)

J'ai eu un problème similaire avec ArcMap 10.3 en combinaison avec Visual Studio 2013. J'ai trouvé tous les mêmes messages que vous avez mentionnés, et en fait, à un moment donné, j'ai pu déboguer et atteindre un point d'arrêt. Mais pour une raison quelconque, cela a cessé de fonctionner après un certain temps, et il n'y avait aucun moyen de le faire fonctionner à nouveau. Enfin, j'ai rétabli le cadre cible de mon projet de .Net 4.5 à .Net 3.5 et défini le supportRuntime dans le .exe.config sur v2.0.50727. Cela m'a résolu. Peut-être que votre complément ArcCatalog utilise 4.5 et ArcMap one 3.5?
Berend

C'est une possibilité @Berend. Le Framework cible (toutes les configurations) est défini sur .NET Framework 3.5 Client Profile ... devrait-il s'agir de 4 ou 4 Client Profile? Cet outil est très ancien, écrit à l'origine en VB6, il a été converti en .net dans ArcGis 9.3 qui utilise 3.5, donc quand il a été converti en complément, le framework n'a pas été modifié - il a compilé et s'est bien déroulé donc je n'ai pas vu le besoin de le changer. Je pense vraiment que vous êtes sur quelque chose ici - quelque chose que je n'ai pas vu dans les autres messages.
Michael Stimson

C'EST @Berend !!! veuillez l'écrire comme réponse pour récupérer votre prime. J'ai changé le cadre cible en .NET Framework 4 Client Profile et les points d'arrêt sont devenus actifs; Je savais qu'il devait y avoir quelque chose de simple mais bien caché que je négligeais ... Merci beaucoup . Maintenant, je peux déboguer ce code correctement.
Michael Stimson

Réponses:


2

Mise à niveau de mon commentaire initial vers une réponse:

J'ai eu un problème similaire avec ArcMap 10.3 en combinaison avec Visual Studio 2013. J'ai trouvé tous les mêmes messages mentionnés par @ michael-miles-stimson, et en fait, à un moment donné, j'ai pu déboguer et atteindre un point d'arrêt. Mais pour une raison quelconque, cela a cessé de fonctionner après un certain temps, et il n'y avait aucun moyen de le faire fonctionner à nouveau.

Enfin, j'ai rétabli le cadre cible de mon projet de .Net 4.5 à .Net 3.5 et défini le supportRuntime dans le .exe.config sur v2.0.50727. Cela m'a résolu.

Si le complément ArcCatalog utilise 4.5 et ArcMap one 3.5, cela expliquerait le comportement expliqué dans la question.

Je ne pense pas que ce soit important si vous utilisez la version Client ou Full, j'ai toujours tendance à utiliser Full, car à un moment donné, il me semble toujours manquer une classe qui n'est pas dans la version Client.


Merci Berend. Cela a totalement résolu le problème, prenez la générosité avec mes compliments.
Michael Stimson

1

Lors du nettoyage, j'ai remarqué que les compléments pour ArcCatalog sont copiés dans% USERPROFILE% \ Documents \ ArcGIS \ AddIns \ Desktop10.X {AddInID} \ où les compléments ArcMap ne sont pas

En fait, les compléments Arcmap sont également copiés à cet emplacement après l'installation (ou un build dans Visual studio).

Pour résoudre ce problème, essayez ces étapes:

  1. Nettoyez toute votre solution dans Visual Studio en cliquant avec le bouton droit sur la solution et choisissez Nettoyer la solution

  2. si votre projet de complément arccatalog dépend d'autres assemblys tiers, assurez-vous que ces assemblys ont des fichiers .pdb (symbole) à côté d'eux

  3. Dans Visual Studio, si vous avez d'autres projets dans votre solution dont votre projet arccatalog dépend, alors ajoutez leur référence de projet au lieu de leurs DLL. comme cette image:

entrez la description de l'image ici


J'ai fait le nettoyage, c'était l'une des premières choses que j'ai faites, il n'y a pas d'autres projets ou assemblages tiers (peut-être, celui-ci a besoin de la bibliothèque Excel v12) ... pensez-vous que les objets Excel sont à l'origine de ce problème? si c'est le cas, comment puis-je obtenir un fichier pdb pour cela - je ne pense pas que Microsoft me donnera son code source, quel que soit l'âge de cette version.
Michael Stimson

Très possible. Supprimez simplement les objets Excel, nettoyez puis réessayez le débogage.
Farid Cheraghi

partager le code source de Microsoft est un non. Pour pdb, google it.
Farid Cheraghi

1
Excel / ArcObjects est ce dont j'ai besoin pour déboguer. Pour une raison quelconque, cela passe par la feuille jusqu'à environ X et s'arrête. Je sais qu'ArcGis v10.x prend en charge les feuilles de calcul Excel, mais ce code et les feuilles associées sont originaires d'ArcGis 9.1 et les feuilles ne sont pas conformes (l'en-tête se trouve sur la ligne 3). Ce message a donné des instructions pour obtenir le pdb social.msdn.microsoft.com/Forums/office/en-US/… donc je vais essayer .
Michael Stimson

1
Farid, car il s'est avéré que c'était une version du framework .NET qui causait le problème. Cela pourrait avoir quelque chose à voir avec Excel ne voulant pas jouer au jeu avec l'ancienne version. L'une des nombreuses mises à jour Microsoft peut avoir gâché la possibilité d'utiliser des objets Excel 12 dans .net 3.5.
Michael Stimson

1

Ok, je viens de vérifier que je suis capable de parcourir le code en utilisant ce processus. Je fais cela dans ArcMap, mais je pense que cela devrait s'appliquer à ArcCatalog car le processus traite du débogage des DLL et non d'un élément spécifique à ESRI. J'ai confirmé cela dans ArcMap 10.2.2 et ArcCatalog 10.2.2. Comme il s'agit d'un processus Windows traitant directement des DLL, les versions du logiciel ESRI ne devraient pas avoir d'importance.

J'utilise Visual Studio pour attacher à un processus .

Je suis capable de parcourir une extension compilée (DLL) à l'aide de ce processus lorsque la DLL est invoquée dans un autre programme.

Voici ce que je fais ...

Dans Visual Studio, ouvrez votre projet d'extension. J'ai construit mon extension dans VS 2010 C # Express, mais j'utilise VS 2013 Ultimate pour ce faire. Je ne sais pas si l' option Attacher au processus est une option dans la version 2010 Express. Je ne l'ai pas vu, mais il pourrait être caché quelque part puisqu'il s'agissait de la version Express.

Ouvrez votre produit ESRI et installez le complément. Maintenant, de retour dans VS, cliquez sur Attacher au processus et sélectionnez le processus de votre produit ESRI. Le mien était ArcMap.exe . À partir d'ici, Visual Studio doit attacher son débogueur au programme et lorsque la DLL est exécutée pour laquelle vous avez ouvert et défini des points d'arrêt, il s'arrête là. Cela agira comme n'importe quel autre programme que vous déboguez dans Visual Studio. Il peut étirer certains débogages dans certains des éléments ESRI bien que le code soit très probablement obscurci donc pas si utile.

Je me suis assuré d'avoir installé le complément à partir de mon répertoire Release pour mon projet. Pour autant que je sache, ESRI ne copie pas la DLL dans l'un de ses dossiers, mais ils utilisent leur utilitaire d'enregistrement d' assembly Esri pour enregistrer l'emplacement de la DLL afin que le système sache où le trouver lorsqu'il est référencé à partir d'un produit ESRI.

FYI: J'utilise ce processus pour déboguer les bibliothèques de classes que j'écris dans un projet qui sont utilisées dans un autre. La même théorie devrait appliquer les compléments ESRI car ce ne sont que des bibliothèques de classes (DLL) appelées dans un autre programme. Mis à part Visual Studio, je pense que tout autre débogueur Windows devrait pouvoir se joindre à la DLL.

VEUILLEZ poster des commentaires sur celui-ci. J'ai pensé que cela fonctionnerait depuis un certain temps et je suis très curieux de voir comment les autres sont justes avec cette méthode.

EDIT Je viens de créer un nouveau complément ArcCatalog, qui consiste en un simple bouton. J'ai ajouté une affectation de chaîne string stophere = "debugger stopped!";dans le gestionnaire d'événements pour l'événement click du bouton. Grâce à ArcCatalog, il a cessé d'utiliser la méthode Attacher au processus . Les informations de Visual Studio 2010 sur le processus sont ici .

Il existe quelques éléments sur MSDN concernant le débogage des DLL via diverses méthodes dans Visual Studio et Windows Debugger. Personnellement, je trouve que l' attachement au processus est meilleur que le démarrage d'une méthode de programme externe et également meilleur que l'utilisation du débogueur distant .

Le seul inconvénient de cette méthode est que vous perdez l' approche F5 où vous déboguez directement à partir de Visual Studio. Cela signifie donc, apporter des modifications à votre code, installer la mise à jour, démarrer ArcCatalog, attacher au processus, puis atteindre vos points d'arrêt. Cependant, je trouve que cette méthode est assez bonne à savoir si vous rencontrez des problèmes comme vous. Ce processus peut être un peu plus long, mais c'est une méthode infaillible pour obtenir vos résultats.


J'ai Visual Studio 2010 Professional , il y a une grande différence entre ArcMap et ArcCatalog comme indiqué dans la question ... mes débogages ArcMap complètent très bien. Lorsque j'écrivais cela en tant que code COM (ArcGis 9.3.1), cela fonctionnait très bien .... en fait, en y réfléchissant, je devrais m'assurer que les très anciennes extensions Esri (9.3.1) ont également disparu. Qu'avez-vous dit dans votre commentaire sur la modification d'ArcCatalog.exe.config, pouvez-vous me montrer la première demi-douzaine de lignes s'il vous plaît. Essayez de créer un complément ArcCatalog qui fait très peu (msgbox devrait être suffisant) et voyez si vous pouvez le déboguer.
Michael Stimson

@ MichaelMiles-Stimson ... était ce commentaire destiné à cette réponse? J'ai également modifié ma question pour ajouter plus d'informations et testé avec ArcCatalog. Ma méthode fonctionne mais vous ne pouvez pas F5 à partir de Visual Studio, vous devez faire un peu plus de travail mais toujours obtenir le même résultat sans avoir à gérer les fichiers de configuration.
Branco

Branco, merci pour votre réponse réfléchie, mais il s'avère que c'est une version du framework .NET qui était à l'origine du problème.
Michael Stimson

1

Il s'agit d'un fichier que j'ai construit au cours des deux dernières années avec les extensions ArcMap et ArcCatalog, puis les compléments:

Éléments pouvant empêcher ArcMap de déboguer des compléments dans Visual Studio:

  • Mode Release plutôt que mode Debug (si vous utilisez une ancienne approche sans complément, cela peut être un problème car la DLL \ bin \ Debug a probablement été enregistrée avec regasm, pas \ bin \ Release
  • Anciennes versions d'outils dans l'interface utilisateur empêchant le chargement de la version de débogage (démarrez ArcMap sans Visual Studio, supprimez toutes les commandes et supprimez tous les compléments, fermez ArcMap)
  • Y a-t-il une chance que la version non complémentaire soit utilisée? Sinon, la DLL doit être enregistrée
  • Jamais nécessaire d'installer manuellement le complément pour le débogage
  • Nettoyer la solution et le projet, puis parcourir manuellement les fichiers d'application et supprimer tout le contenu / bin et / obj
  • Videz le contenu de C: \ Users \ <NAME> \ Local Settings \ ESRI \ Desktop10.0 \ AssemblyCache
  • Assurez-vous que les autres emplacements de projet \ bin précédemment / éventuellement référencés par ArcMap pendant le débogage n'ont pas de DLL / compléments précédemment construits du même nom que celui que vous essayez de déboguer (c'est-à-dire la migration par points / version du complément) choc)
  • Dans certains compléments, les points d'arrêt ne seront viables qu'après avoir cliqué sur le bouton de l'outil - c'est à ce moment qu'il est initialisé
  • Si aucun point d'arrêt n'est atteint, il est possible qu'une exception soit levée dans le constructeur et que l'outil ne fonctionne pas. Vérifiez cela en affichant toutes les exceptions CLR via le menu Débogage -> Exceptions -> cochez «Exceptions Common Language Runtime»
  • Si tout le reste échoue, redémarrez

Merci pour l'effort tombumb, tous ceux-ci ont été abordés dans le post lié .. Berend a la bonne réponse (cette fois) car ce n'était pas l'un des suspects habituels.
Michael Stimson

0

Voici la solution:

Essayez de supprimer SupportedRuntime de arcmap.exe.config, dans le répertoire bin.

Il s'agit du fichier xml \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.

Pourquoi le point d'arrêt ne peut-il pas être "atteint" lors du débogage d'un complément ArcGIS 10?


J'ai fait référence à ce poste dans la question. Il ne s'agit pas d'ArcMap, cela fonctionne très bien, c'est ArcCatalog qui cause le problème. Bien essayé quand même. Je pense que je vais devoir offrir une prime sur celui-ci.
Michael Stimson

Salut @ MichaelMiles-Stimson Avez-vous essayé de modifier ArcCatalog.exe.config? Pour le dernier add-in que j'ai développé, j'ai décommenté ce <! - <supportedRuntime version = "v4.0.30319" /> -> et j'ai plutôt commenté ce <supportedRuntime version = "v2.0.50727" />
rowanwins

Je n'ai pas pu trouver <supportedRuntime version = "v2.0.50727" /> pour commenter @rowanwins. En supposant que j'ai une sauvegarde et que je souhaite supprimer la ligne à la place, que se passe-t-il dans le boîtier <startup>? Y a-t-il une raison pour laquelle cette ligne est mise en commentaire?
Michael Stimson

@Rowanwins vous pourriez peut-être mettre cela comme réponse, cela permettrait au moins une capture d'écran de ce que vous essayez d'exprimer et potentiellement quelques mots de plus et je vais enquêter demain ... à la maison!
Michael Stimson

0

Quelques étapes évidentes (je suppose que vous les avez déjà essayées ... mais quand même).

  1. Vérifiez si le mode est toujours "Debug" au lieu de la version.
  2. Supprimez les dossiers "obj" et "bin" et reconstruisez.

Oui, c'est fait. Cela a été mentionné sur l'un des postes de débordement de pile. Ce doit être quelque chose de moins évident.
Michael Stimson
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.