¿Por qué no se puede "alcanzar" el punto de interrupción al depurar un complemento de ArcGIS 10?

23

De vez en cuando me encuentro con el siguiente problema:

Comienzo a depurar el complemento y los puntos de interrupción se ignoran. Casi parece que la comunicación entre el IDE y el componente no está funcionando.

Mi problema es que la última vez que sucedió esto lo resolví y ahora no puedo recordar lo que hice para solucionarlo.

El punto de interrupción no será alcanzado actualmente. No se han cargado símbolos para el documento.

Enparte,elproblemaquetengoyasedescribe here pero no hay solución para el mal funcionamiento del punto de ruptura real.

Ten en cuenta que esto normalmente funciona.

Eliminar el contenedor y el objeto no parece funcionar.

Esta vez acabo de restaurar todo el proyecto desde la copia de seguridad y comencé de nuevo, pero me gustaría saber cómo solucionarlo si llegara a encontrarlo nuevamente.

    
pregunta Jakub Sisak GeoGraphics 15.08.2011 - 21:27

20 respuestas

16

Aquí hay 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)

Intente eliminarlo de arcmap.exe.config, en el directorio bin.

Este es el archivo xml \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.

    
respondido por el Jakub Sisak GeoGraphics 26.10.2011 - 18:09
8

2 años y 2 versiones más tarde y esto sigue siendo un problema. Acabo de terminar de actualizar / mejorar todos mis complementos para 10.2 y encontré este problema nuevamente. Implementé TODAS las sugerencias en esta publicación y nada funcionó, pero he descubierto 1 posible problema adicional . Desafortunadamente, no estoy seguro de si este fue el culpable o no porque también he implementado la mayoría de las otras correcciones posibles al mismo tiempo.

Nueva búsqueda: me di cuenta de que he estado desarrollando Addins desde la versión 10 en la misma máquina y después de la reinstalación no siempre he limpiado los datos heredados de ArcGIS. Descubrí que tenía una versión anterior del complemento culpable en una versión anterior de los datos de ArcGIS en C: \ Archivos de programa (x86) \ ArcGIS. Dado que ArcGIS cargará los complementos heredados, posiblemente haya algún tipo de de un conflicto. Eliminé todos los datos de aplicaciones de Arcgis heredados (Desktop10.0, Desktop10.1) dejando solo Desktop10.2 y el punto de ruptura cobró vida. Nuevamente, no estoy al 100% si esta es la solución, pero puede ser otro elemento en la lista para verificar.

He visto que este problema en particular se llama "el último asesino de la productividad" en otro sitio y no puedo estar más de acuerdo.

Para resumir aquí está mi lista de tareas actual para el problema del punto de interrupción 'muerto':

  1. Asegúrate, en realidad estoy ejecutando el complemento. No basta con que el debugger inicie la aplicación: el punto de interrupción aparecerá "muerto" hasta que ejecute el complemento (botón, opción de menú, etc.)

  2. Elimine los modificadores OBJ y BIN del directorio del proyecto.

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

  4. Eliminar todos los datos de ensamblaje heredados. (Si la versión actual es 10.2, elimine Desktop10.0, Desktop10.1 asembly data) No hay pruebas de que esto ayude o sea parte del problema, pero no hay razón para que estos datos existan, por lo que los elimino por si acaso (C : \ Users \ User \ AppData \ Local \ ESRI)

  5. Según la sugerencia de soporte de ESRI; Modifique el archivo de configuración de ArcCatalog y ArcMap (no funcionó solo cuando lo intenté, pero varias personas lo han recomendado como solución, incluido el soporte de ESRI). Localice ArcCatalog.exe.config y ArcMap.exe.config en C: \ Archivos de programa (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 de aplicación de ArcGIS heredados del directorio de instalación. Esto lo que funcionó para mí. (probablemente) Vaya a: C: \ Archivos de programa (x86) \ ArcGIS Elimine todas las carpetas, excepto las actuales, para Desktop10.x (es decir, Desktop10.0, Desktop10.1). Solo la versión de Desktop actual debe permanecer en esta ubicación.

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

  8. Reinicia la computadora. (Esto funcionó algunas veces en el pasado) También se encontró que esta era una de las soluciones recomendadas para el desbordamiento de pila.

  9. En Config.esriaddinx: cambie el botón para incluir onDemand = false: (sugerencia de Kirk - ver arriba) Esto no me funcionó personalmente.

  10. Reconstruye el proyecto desde cero. (Esto me funcionó en el pasado).

respondido por el Jakub Sisak GeoGraphics 08.10.2013 - 17:55
5

La única vez que obtuve esto fue cuando tuve otra instancia de ArcMap abierta y olvidé cerrarla antes de construir / depurar. Si no cierra todas las instancias utilizando el ensamblaje, se seguirá utilizando el anterior. O algo por el estilo.

    
respondido por el blah238 15.08.2011 - 23:52
5

Como .NET Framework de mi proyecto es 4.0, cambié a supportedRuntime version="v4.0.30319" en ArcMap.exe.config y noté que el problema se retrasó por este cambio. También recordé que ArcMap también carga ArcCatalog, así que también cambié ArcCatalog.exe.config a supportedRuntime version="v4.0.30319" y YES! Está funcionando de nuevo. Pasé todo el día tratando de arreglar esto y espero que también te funcione.

    
respondido por el Sabin Kolarov 27.10.2012 - 00:01
4

Probé las sugerencias anteriores por un tiempo y finalmente encontré una solución. Cortando a la persecución, daré primero la solución, luego la explicación:

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

  2. Abre un Explorador de Windows. Vaya a C: \ Usuarios \\ Configuración local \ ESRI \ Desktop10 ..

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

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

  5. Eliminar la .dll.

  6. Reconstruye el proyecto y depura. Una vez que se active su complemento, debería ver cómo se actualizan los contenidos de la memoria caché.

  7. Si lo desea, vuelva a ocultar los archivos protegidos del sistema operativo.

El problema para mí fue que había una instancia antigua de mi DLL en la carpeta C: \ Users \\ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache \, y tampoco pude ver \ AssemblyCache porque no lo hice No se da cuenta de que era un archivo oculto del sistema operativo. También hubo una instancia zombie de ArcMap en ejecución, y cuando intenté eliminar la DLL inicialmente estaba bloqueada. Mi sospecha es que lo que causó el problema en primer lugar es que no cerré completamente una sesión de depuración de ArcMap antes de volver a compilar el código e iniciar otra. La DLL antigua en la memoria caché no se pudo sobrescribir porque la antigua instancia de ArcMap aún la tenía bloqueada, y una vez que se desincronizó con el nuevo código, la versión en caché ya no se actualizó. (Puedo ver por fechas de archivo que .config, .pdb y .xml se están actualizando pero no el .dll.)

    
respondido por el StephenKCA 08.01.2013 - 16:52
2

Estaba lidiando con el mismo problema, con mi propio complemento en un tema totalmente diferente, e inevistamente indagué lo siguiente:

Al principio, inicie la depuración y en el menú elija la siguiente ventana Debug > > Windows > > Módulos, donde puede ver qué módulos se cargaron en el inicio de la depuración. Si no puede ver allí el yourAddIn.dll, al menos sabrá que el estudio no lo cargó. Si ve allí y no puede poner el punto de interrupción allí, entonces el estudio cargó uno viejo. Para verificar esto, cambie el nombre del ensamblaje en las propiedades del proyecto, reconstruya la solución, inicie la depuración y verá la dll antigua cargada allí. No sé de dónde carga el estudio esta dll antigua.

Vaya al Explorador de soluciones y verifique los archivos "yourAddIn.Addin" y "yourAddIn - For Testing.AddIn" y pueden diferir. ¡El estudio utiliza solo el segundo archivo en su Administrador de complementos! Al primer cambio También cambie la etiqueta en ella para referirse a la dll correcta y también puede revisar la etiqueta. Para mí, se estableció de nuevo en 0 en el archivo "yourAddIn - For Testing.AddIn", así que lo cambié de nuevo a 1. (Si elimina el directorio bin de su complemento e inicia el estudio, se lo indicará y le preguntará si desea eliminar este complemento de su lista de complementos. En este punto, Studio establece el LoadBehavior en 0. )

Después de estos dos cambios, ¡comenzó a funcionar nuevamente!

    
respondido por el MrNice 24.01.2012 - 11:10
2

Con Visual Studio, creé un nuevo complemento para Arcmap y le agregué un botón y una barra de herramientas. Resultando en un archivo de configuración con este aspecto:

<ESRI.Configuration xmlns="http://schemas.esri.com/Desktop/AddIns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Name>ArcMapAddin4</Name>
  <AddInID>{b6b350bb-084d-42b8-a44a-6dbb6a9f5906}</AddInID>
  <Description>Type in a description for this Add-in.</Description>
  <Version>1.0</Version>
  <Image>Images\ArcMapAddin4.png</Image>
  <Author>Kirk</Author>
  <Company>Microsoft</Company>
  <Date>8/15/2011</Date>
  <Targets>
    <Target name="Desktop" version="10.0" />
  </Targets>
  <AddIn language="CLR" library="ArcMapAddin4.dll" namespace="ArcMapAddin4">
    <ArcMap>
      <Toolbars>
        <Toolbar id="MyToolbar4" caption="MyToolbar4" showInitially="true">
          <Items>
            <Button refID="Microsoft_ArcMapAddin4_Button1"/>
          </Items>
        </Toolbar>
      </Toolbars>
      <Commands>
        <Button id="Microsoft_ArcMapAddin4_Button1" class="Button1" message="Add-in command generated by Visual Studio project wizard." caption="My Button" tip="Add-in command tooltip." category="Add-In Controls" image="Images\Button1.png" />
      </Commands>
    </ArcMap>
  </AddIn>
</ESRI.Configuration>

Creé algo de código en el constructor para el botón y puse un punto de interrupción en él. Comencé en modo de depuración y veo que el ensamblaje aún no se ha cargado:

CambiéelbotónparaincluironDemand=false:

Cuando volví a iniciar arcmap, llegó al punto de ruptura. Tenga en cuenta que si la barra de herramientas está desactivada durante el inicio, deberá hacerla visible para que se llame al constructor de botones, por lo que, de alguna manera, todavía está disponible.

    
respondido por el Kirk Kuykendall 15.08.2011 - 22:41
2

Tuve que cambiar mi complemento para que arcCatalog coincida usando el framework 4 con la nueva versión 10.1 de ArcCatalog.
Simplemente comenté la versión="v2.0.50727" y no comentaré "v4.0.30319"

En C: \ Archivos de programa (x86) \ ArcGIS \ Desktop10.1 \ bin el archivo de configuración xml ArcCatlog.exe

se detiene en punto de interrupción ahora

Parece ser el mismo problema con arcmap

    
respondido por el anonymous 27.06.2012 - 20:18
2

Después de migrar un proyecto ESRI ArcGIS 10 de una máquina a otra, encontré el error de que la máquina no podía cargar los archivos de depuración .pdb para ArcMap.exe. Intenté todos los consejos en este post sin ninguna suerte.

Luego hice lo siguiente:

Eliminé las referencias de todas las bibliotecas Esri. * en cada proyecto que las contenía y las volví a agregar al proyecto en la nueva máquina.

Esto es lo que finalmente me funcionó. Si alguien tropieza aquí con este vago problema, y ha intentado todo lo demás que se menciona en esta página, intente esto: es rápido, fácil y bastante inofensivo. No estoy completamente seguro de por qué se tuvo que hacer, supongo que tiene que ver con buscar las bibliotecas por máquina.

Esto fue para un proyecto que usó BaseCommands / Toolbars, y no los nuevos complementos. Uso de ArcGIS 10.0 y .NET 3.5 con Visual Studio 2010 en Windows 7 Pro.

    
respondido por el codemouse 23.01.2013 - 21:39
2

Para aquellos dirigidos a .Net 4.0 Framework, los siguientes me funcionaron.

  1. De acuerdo con muchas sugerencias, modifique ArcMap.exe.config y ArcCatalog.exe.config para apuntar al marco 4.0

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0.30319"/> <!--supportedRuntime version="v2.0.50727"/--> </startup>
    Por alguna razón, ArcCatalog.exe.config aparece bloqueado para modificar. Lo solucioné al copiarlo y modificarlo en otro directorio y luego reemplazarlo.
  2. Luego, en Config.esriaddinx, cambie el idioma del complemento a "CLR4.0"
respondido por el Nilster 06.01.2016 - 11:23
1

Dos posibles causas vienen a mi mente:

  1. El complemento no está registrado correctamente, por lo que la DLL no se carga en el proceso de ArcMap que se está depurando.

  2. Su proyecto está apuntando a .NET 4. Intente apuntar a .NET 3.5 en su lugar.

respondido por el Petr Krebs 15.08.2011 - 21:58
1

Si está codificando con varios proyectos en la misma solución de Visual Studio, puede encontrar situaciones en las que Visual Studio (VS) "deshabilita" sus puntos de interrupción y no puede recorrer su código. Esto me sucedió recientemente, donde no pude entrar en un proyecto de ensamblaje de DLL "dependiente" que se estaba llamando desde mi proyecto principal.

Las advertencias de VS sugirieron que mi ensamblaje (DLL) estaba desactualizado y no coincidía exactamente con mi código. Existen opciones de VS para desactivar el requisito de que el código coincida, pero de manera intuitiva, esto parecía una mala idea y estaba respaldado por publicaciones de Internet. Leí muchos sitios web y hay algunas sugerencias geniales por ahí.

Al final hice una búsqueda de la DLL de salida de mi máquina dependiente y encontré varias copias antiguas en varias ubicaciones de mi computadora (probablemente de experimentos anteriores y configuraciones de proyectos). Así que los borré todos y reconstruí mi solución desde cero. Esto solucionó mi problema. Supongo que mi proyecto actual estaba vinculando inadvertidamente a una de las copias antiguas de alguna manera y no usaba la última compilación que se estaba colocando en mi carpeta de depuración.

    
respondido por el Radar 26.10.2011 - 18:55
1

Lo que funcionó para mí no fue eliminar el arcmap.config.exe como se describe en la publicación de Jakub anterior, sino configurar la etiqueta "backedRuntime" en este archivo a la versión correcta del Framework al que te diriges en Visual Studio. mi caso:

<startup>
    <supportedRuntime version="v3.5"/>
</startup> 
    
respondido por el JsP 26.06.2012 - 16:38
1

En varios proyectos de ArcObjects, compilé una lista de razones por las cuales la depuración podría no funcionar con los complementos, extensiones y comandos (pre-add-in). En ningún orden en particular:

  1. Estás en el modo Release de Visual Studio en lugar del modo Debug
  2. Las versiones anteriores de la herramienta todavía están registradas con ArcMap / ArcCatalog y esto impide que se cargue su versión de depuración, u otras herramientas con el mismo nombre se registran
  3. El proyecto / solución necesita limpieza, y si es necesario, vaya a \ bin y \ obj y elimine los archivos persistentes
  4. En algunos casos, los puntos de interrupción solo se pueden alcanzar después de que la herramienta se haya activado (a petición)
  5. Si no se alcanzan puntos de interrupción, es posible que se esté produciendo una excepción en el constructor y que la herramienta nunca se ejecute. Verifique mostrando todas las excepciones de CLR en el menú de depuración
  6. Es necesario eliminar las entradas en C: \ Users \ < name > \ Local Settings \ ESRI \ DesktopX.X \ AssemblyCache

Muchos pasos requieren que se reinicie ArcMap. Si todo lo demás falla, el reinicio de la máquina es un respaldo fácil, pero solo una vez hice que esto hiciera una diferencia.

    
respondido por el tomfumb 27.10.2012 - 01:15
1

Lo que funcionó para mí fue descrito por AnthonyWJones en enlace : "Abra las propiedades del Proyecto Web asociado. Seleccione la pestaña Web . Desplácese hasta la parte inferior y en la sección "Depuradores" asegúrese de que la opción "Silverlight" esté marcada ".

    
respondido por el user61510 29.10.2015 - 13:13
0

Me ha pasado esto una o dos veces. Si recuerdo correctamente, pude hacer funcionar el punto de interrupción cuando hice un cambio de código menor, lo que significaba que la aplicación se había reconstruido. ¿Qué sucede cuando construyes o reconstruyes tu proyecto?

    
respondido por el kenbuja 15.08.2011 - 22:13
0

No puedo creer que más personas no tengan este problema. Ahora me encuentro con esto casi cada vez que estoy mejorando y depurando mis complementos.

Ninguna de las soluciones mencionadas funciona. Para solucionar esto, necesito eliminar todo el proyecto y restaurarlo desde la copia de seguridad. Esto me lleva a creer que algo en el proyecto en particular se ha corrompido, ya que generalmente comienza a suceder cuando ArcMap se bloquea durante la depuración.

    
respondido por el Jakub Sisak GeoGraphics 25.10.2011 - 23:09
0

¿Estás creando tu proyecto usando Framework 4? Tuve el mismo problema, pero cuando cambio al Framework 3.5, funciona bien.

    
respondido por el user20254 19.07.2013 - 19:21
0

intente limpiar y reconstruir y luego ejecute sin depurar, cuando la aplicación se ejecute, adjúntela en VS

    
respondido por el mostafa 14.12.2016 - 10:23
0

Sé que esto puede parecer demasiado obvio, pero lo mencionaré de todas formas es que necesitas la edición adecuada de Visual Studio. Por ejemplo, este problema puede ocurrir con una edición expresa de un año determinado, mientras que puede funcionar con una edición definitiva. Si está utilizando, por ejemplo, 2010, intente cambiar a 2012. Luego intente cambiar de Express a ultimate. Haría esto si aún no lo ha hecho antes de meterse con problemas de carga de símbolos. ESRI proporciona información sobre la descarga de los símbolos en la memoria caché como se menciona en el enlace anterior (ArcObjects 10 .NET SDK Help). Sin embargo, esto puede no ser necesario. Asegúrese de usar el marco .net adecuado también antes de la depuración, por ejemplo, .net 3.5 en las ediciones anteriores. Además, asegúrese de que en las propiedades del proyecto en la categoría de depuración esté apuntando a la ruta del arcmap exe que reside en la carpeta de la bandeja del escritorio, aunque debería estar allí de todos modos cuando comience un complemento.

    
respondido por el user89997 19.01.2017 - 21:53

Lea otras preguntas en las etiquetas