26 votos

¿Por qué no se puede "golpear" el breakpoint al depurar un complemento de ArcGIS 10?

De vez en cuando me encuentro con el siguiente problema:

Empiezo a depurar el Add-In y los breakpoints son ignorados. Casi parece que la comunicación entre el IDE y el componente no funciona.

Mi problema es que la última vez que me pasó esto lo solucioné y ahora no recuerdo qué hice para solucionarlo.

El breakpoint no será alcanzado. No se han cargado símbolos para el documento. enter image description here

En parte, el problema que tengo ya está descrito aquí pero no hay solución para el mal funcionamiento real del punto de ruptura.

Tenga en cuenta que esto funciona normalmente.

Borrar el contenedor y el objeto no parece funcionar.

Esta vez he restaurado todo el proyecto desde la copia de seguridad y he vuelto a empezar, pero me gustaría saber cómo solucionarlo en caso de que me vuelva a ocurrir.

17voto

CodeSlave Puntos 7133

He aquí una solución no oficial y aún no probada del personal de ESRI. (Hicieron hincapié en que esto no es una solución oficial)

Intenta eliminar de arcmap.exe.config, en el directorio bin.

Esta es la \ArcGIS\Desktop10.0\bin\arcmap.exe.config xml.

enter image description here

8voto

CodeSlave Puntos 7133

2 años y 2 versiones después y esto sigue siendo un problema. Acabo de terminar de actualizar/mejorar todos mis addins para 10.2 y me he vuelto a encontrar con este problema. Implementado TODAS las sugerencias en este post y nada funcionó, pero me han descubierto 1 posible problema adicional . Desafortunadamente, no estoy seguro de si esto fue el culpable o no porque también he implementado la mayoría de las otras posibles correcciones al mismo tiempo.

Nuevo hallazgo: Me di cuenta de que he estado desarrollando Addins desde la versión 10 en la misma máquina y después de volver a instalar no siempre han limpiado los datos heredados de ArcGIS. Encontré que tenía una versión anterior del addin culpable en una versión anterior de datos de ArcGIS en C:\Program Archivos (x86) \ArcGIS. Dado que ArcGIS cargará los complementos heredados, es posible que haya algún tipo de conflicto. He eliminado todos los datos de la aplicación ArcGis legado (Desktop10.0, Desktop10.1) dejando sólo Desktop10.2 y el breakpoint volvió a la vida. Una vez más no estoy 100% si esta es la solución, pero puede ser otro elemento de la lista para comprobar.

He visto que este problema en particular se llama "el asesino definitivo de la productividad" en otro sitio y no podría estar más de acuerdo.

En resumen, esta es mi lista de tareas pendientes para el problema de los breakpoints "muertos":

  1. Ensure, en realidad estoy ejecutando el addin. No basta con que el depurador inicie la aplicación: el breakpoint aparecerá "muerto" hasta que ejecute el complemento (botón, opción de menú, etc.).

  2. Borre los archivos OBJ y BIN del directorio del proyecto.

  3. Borra el contenido de assebmly chache: C:\Users\User\AppData\Local\ESRI\Desktop10.2\AssemblyCache

  4. Borrar todos los datos de montaje heredados. (Si la versión actual es 10.2 borre los datos de ensamblaje de Desktop10.0, Desktop10.1) No hay pruebas de que esto ayude o sea parte del problema pero no hay razón para que estos datos necesiten existir así que los borro por si acaso ( C:\Users\User\AppData\Local\ESRI )

  5. Según la sugerencia de soporte de ESRI; Alterar el XML de configuración de ArcCatalog y ArcMap (no funcionó por sí mismo cuando lo intenté, pero varias personas han recomendado esto como una solución, incluyendo el soporte de ESRI) Localice ArcCatalog.exe.config y ArcMap.exe.config en C:\Program Archivos (x86) \ArcGIS\Desktop10.2\bin Abra cada xml en el bloc de notas y elimine la línea <supportedRuntime version="v2.0.50727"/> Se trata de la quinta línea

  6. Elimine todos los datos heredados de la aplicación ArcGIS del directorio de instalación. Esto es lo que funcionó para mí. (Probablemente) Ir a: C:\Program Archivos (x86) \ArcGIS Elimine todas las carpetas excepto las actuales para Desktop10.x (es decir, Desktop10.0, Desktop10.1) En esta ubicación sólo debe permanecer la versión actual de Desktop.

  7. Elimine y vuelva a añadir todas las referencias del proyecto, incluidas las que no sean ESRI, vuelva a guardar, repita los pasos 2 y 3, vuelva a compilar, ejecute dbugger.

  8. Reinicia el ordenador. (Esto a veces funcionaba en el pasado) ALso encontrado esto es una de las soluciones recomendadas en Stack Overflow.

  9. En Config.esriaddinx - cambie el botón para incluir onDemand=false: (sugerencia de Kirk - véase más arriba) Esto no funcionó para mí personalmente.

  10. Reconstruir el proyecto desde cero. (Esto funcionó para mí en el pasado).

5voto

JSBձոգչ Puntos 25069

Como el .NET Framework de mi proyecto es 4.0, he cambiado a supportedRuntime version="v4.0.30319" en ArcMap.exe.config y me di cuenta de que el problema se retrasó por este cambio. También recordé que ArcMap también carga ArcCatalog así que cambié también ArcCatalog.exe.config a supportedRuntime version="v4.0.30319" y ¡¡¡SI!!! Ya funciona de nuevo. Me he pasado todo el día intentando solucionarlo y espero que a vosotros también os funcione.

5voto

auramo Puntos 161

La única vez que me ha pasado esto es cuando tenía otra instancia de ArcMap abierta y olvidé cerrarla antes de construir/depurar. Si no cierras todas las instancias que utilizan el ensamblaje, la antigua seguirá utilizándose. O algo por el estilo.

4voto

mopoke Puntos 6437

He probado las sugerencias anteriores durante un rato, y finalmente he llegado a una solución. Para ir al grano, primero daré la solución y luego la explicación:

  1. Abra el Administrador de tareas. Finalice el proceso de cualquier copia de ArcMap.exe.

  2. Abra el Explorador de Windows. Navegue hasta C:\Users\\Local Ajustes \ESRI\Desktop10..

  3. Si no ves AssemblyCache, Organizar > Opciones de carpeta y búsqueda > Ver > desmarca "Ocultar archivos protegidos del sistema operativo (recomendado)"

  4. En los directorios de AssemblyCache, busque el que contiene su .dll.

  5. Borra el .dll.

  6. Reconstruye el proyecto y depura. Una vez que se active el complemento, debería ver que se actualiza el contenido de la caché.

  7. Si lo desea, vuelva a ocultar los archivos OS protegidos.

El problema para mí era que había una vieja instancia de mi DLL en el C:\Users\\Local Ajustes \ESRI\DesktopX.X\AssemblyCache\ y tampoco pude ver \AssemblyCache porque no me di cuenta de que era un archivo oculto del sistema operativo. También había una instancia zombie de ArcMap en ejecución, y cuando traté de eliminar el DLL inicialmente estaba bloqueado. Mi sospecha es que lo que causó el problema en primer lugar es que yo no del todo cerrar una sesión de depuración de ArcMap antes de volver a compilar el código y el inicio de otro. El viejo DLL en la memoria caché no podía ser sobrescrito porque la vieja instancia de ArcMap todavía tenía bloqueado, y una vez que salió de sincronización con el nuevo código de la versión en caché ya no se actualiza. (Puedo ver por las fechas de archivo que el .config, .pdb, y .xml se están actualizando, pero no el .dll).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X