Ok, ich habe gerade überprüft, ob ich mit diesem Verfahren den Code schrittweise durchlaufen kann. Ich mache dies in ArcMap, aber ich denke, es sollte für ArcCatalog gelten, da sich der Prozess mit dem Debuggen von DLLs und nicht mit einem ESRI-spezifischen Element befasst. Ich habe dies sowohl in ArcMap 10.2.2 als auch in ArcCatalog 10.2.2 bestätigt. Da dies ein Windows-Prozess ist, der sich direkt mit DLLs befasst, sollten ESRI-Softwareversionen keine Rolle spielen.
Ich verwende Visual Studio, um an einen Prozess anzuhängen .
Ich kann mit diesem Prozess eine kompilierte Erweiterung (DLL) durchlaufen, wenn die DLL in einem anderen Programm aufgerufen wird.
Hier ist was ich tue ...
Öffnen Sie in Visual Studio Ihr Erweiterungsprojekt. Ich habe meine Erweiterung in VS 2010 C # Express erstellt, verwende dafür jedoch VS 2013 Ultimate. Ich bin nicht sicher, ob " An Prozess anhängen" in der 2010 Express-Version eine Option ist. Ich habe es nicht gesehen, aber es könnte irgendwo versteckt sein, da es die Express-Version war.
Öffnen Sie Ihr ESRI-Produkt und installieren Sie das Add-In. Klicken Sie nun in VS auf An Prozess anhängen und wählen Sie Ihren ESRI-Produktprozess aus. Meins war ArcMap.exe . Von hier aus sollte Visual Studio seinen Debugger an das Programm anhängen. Wenn die DLL ausgeführt wird, für die Sie geöffnet und Haltepunkte festgelegt haben, wird sie dort gestoppt. Dies funktioniert wie jedes andere Programm, das Sie in Visual Studio debuggen. Es kann einige Debug in einige der ESRI Artikel strecken , obwohl der Code die meisten ist wahrscheinlich so nicht so nützlich verschleiert.
Ich habe sichergestellt, dass ich das Add-In aus meinem Release-Verzeichnis für mein Projekt installiert habe. Soweit ich das beurteilen kann, kopiert ESRI die DLL nicht in einen ihrer Ordner, sondern verwendet ihr Esri Assembly Registration Utility , um den Speicherort der DLL zu registrieren, damit das System weiß, wo es zu finden ist, wenn auf ein ESRI-Produkt verwiesen wird.
Zu Ihrer Information: Ich verwende diesen Prozess, um Klassenbibliotheken zu debuggen, die ich in einem Projekt schreibe und die in einem anderen verwendet werden. Dieselbe Theorie sollte dort ESRI-Add-Ins anwenden, da es sich nur um Klassenbibliotheken (DLLs) handelt, die in ein anderes Programm aufgerufen werden. Abgesehen von Visual Studio sollte meines Erachtens jeder andere Windows-Debugger eine Verbindung zur DLL herstellen können.
BITTE poste Kommentare zu diesem Thema. Ich habe gedacht, dass dies für eine Weile funktionieren würde und bin sehr gespannt, wie andere mit dieser Methode fair umgehen.
BEARBEITEN Ich habe gerade ein neues ArcCatalog-Add-In erstellt, das aus einer einfachen Schaltfläche besteht. Ich habe string stophere = "debugger stopped!";
im Ereignishandler eine Zeichenfolgenzuweisung für das Klickereignis der Schaltfläche hinzugefügt . In ArcCatalog wurde die Verwendung der Methode " An Prozess anhängen" nicht mehr verwendet . Informationen zu Visual Studio 2010 zum Prozess finden Sie hier .
In MSDN gibt es einige Dinge zum Debuggen von DLLs mit verschiedenen Methoden in Visual Studio und Windows Debugger. Ich persönlich finde das Anhängen an den Prozess besser als das Starten einer externen Programmmethode und auch besser als die Verwendung des Remote-Debuggers .
Der einzige Nachteil dieser Methode ist, dass Sie den F5- Ansatz verlieren, bei dem Sie direkt in Visual Studio debuggen. Nehmen Sie also Änderungen an Ihrem Code vor, installieren Sie das Update, starten Sie ArcCatalog, hängen Sie es an den Prozess an und treffen Sie dann Ihre Haltepunkte. Ich finde jedoch, dass diese Methode ziemlich gut zu wissen ist, falls Sie auf Probleme stoßen, wie Sie sie haben. Dieser Vorgang kann etwas länger dauern, ist jedoch eine todsichere Methode, um Ihre Ergebnisse zu erzielen.