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 :
J'ai essayé les suggestions de Stack Overflow:
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 #)
la source
Réponses:
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.
la source
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:
Nettoyez toute votre solution dans Visual Studio en cliquant avec le bouton droit sur la solution et choisissez Nettoyer la solution
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
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:
la source
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.
la source
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:
la source
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?
la source
Quelques étapes évidentes (je suppose que vous les avez déjà essayées ... mais quand même).
la source