Ok, acabo de verificar que puedo pasar el código usando este proceso. Estoy haciendo esto en ArcMap, pero creo que debería aplicarse a ArcCatalog ya que el proceso se ocupa de depurar archivos DLL y no un elemento específico de ESRI. Confirmé esto en ArcMap 10.2.2 y ArcCatalog 10.2.2. Como este es un proceso de Windows que trata directamente con las DLL, las versiones de software ESRI no deberían importar.
Estoy usando Visual Studio para adjuntar a un proceso .
Puedo pasar a través de una extensión compilada (DLL) usando este proceso cuando la DLL se invoca en otro programa.
Esto es lo que estoy haciendo ...
En Visual Studio, abra su proyecto de extensión. Construí mi extensión en VS 2010 C # Express, pero estoy usando VS 2013 Ultimate para hacer esto. No estoy seguro de si Adjuntar al proceso es una opción en la versión Express 2010. No lo vi, pero podría estar oculto en algún lugar ya que era la versión Express.
Abra su producto ESRI e instale el complemento. Ahora, de vuelta en VS, haga clic en Adjuntar al proceso y seleccione el proceso de su producto ESRI. El mío fue ArcMap.exe . A partir de aquí, Visual Studio debe adjuntar su depurador al programa y cuando se ejecute la DLL que tiene abierta y los puntos de interrupción establecidos, se detendrá allí. Esto actuará como cualquier otro programa que esté depurando en Visual Studio. Se puede estirar algunos de depuración en algunos de los artículos de ESRI aunque el código es más probable ofuscado por lo que no es tan útil.
Me aseguré de instalar el complemento desde mi directorio de lanzamiento para mi proyecto. Por lo que puedo decir, ESRI no copia la DLL en una de sus carpetas, pero usan su Utilidad de registro de ensamblaje Esri para registrar la ubicación de la DLL para que el sistema sepa dónde encontrarla cuando se hace referencia desde un producto ESRI.
FYI: uso este proceso para depurar bibliotecas de clases que escribo en un proyecto que se están utilizando en otro. La misma teoría allí debería aplicar complementos ESRI ya que son solo bibliotecas de clases (DLL) que se invocan en otro programa. Aparte de Visual Studio, creo que cualquier otro depurador de Windows debería poder conectarse a la DLL.
POR FAVOR publique comentarios sobre este. He pensado que esto funcionaría por un tiempo y tengo mucha curiosidad por ver cómo otros son justos con este método.
EDITAR Acabo de crear un nuevo complemento ArcCatalog, que consiste en un simple botón. Agregué una asignación de cadena string stophere = "debugger stopped!";
en el controlador de eventos para el evento de clic del botón. A través de ArcCatalog, dejó de usar el método Adjuntar al proceso . La información de Visual Studio 2010 sobre el proceso está aquí .
Hay algunas cosas en MSDN sobre la depuración de archivos DLL a través de varios métodos en Visual Studio y Windows Debugger. Personalmente, considero que Attach to Process es mejor que iniciar un método de programa externo y también es mejor que usar el depurador remoto .
El único inconveniente de este método es que pierde el enfoque F5 donde depura directamente desde Visual Studio. Eso significa que debe realizar cambios en su código, instalar la actualización, iniciar ArcCatalog, Adjuntar al proceso y luego alcanzar sus puntos de interrupción. Sin embargo, creo que este método es bastante bueno para saber en caso de que tenga problemas como el que tiene. Este proceso puede ser un poco más largo, pero es un método infalible para obtener sus resultados.