2009-03-17 13 views
97

Tengo un proyecto (A) que hace referencia a un conjunto de una biblioteca de clases de proyecto externo (B) que se encuentra en otra solución vs.¿Cómo depurar los proyectos externos de la biblioteca de clases en Visual Studio?

Todavía no entiendo cómo puedo depurar eficientemente la biblioteca de clases desde B mientras ejecuto el programa desde el proyecto A. ¿Hay algo que tenga que habilitar en el proyecto B como información de depuración, etc. para que pueda intervenir en la depuración tiempo de A?

Gracias de antemano.

Respuesta

156

Pruebe a desactivar Just My Code (JMC).

  • Herramientas -> Opciones -> depurador
  • Desactive la opción "Habilitar Sólo mi código"

Por defecto, el depurador intenta restringir la visión del mundo de código que sólo está contenida dentro de su solución . Esto es realmente bueno a veces, pero cuando quiere depurar código que no está en su solución (como es su situación) necesita deshabilitar JMC para poder verlo. De lo contrario, el código será tratado como externo y en gran parte oculto de su vista.

EDITAR

Cuando estás roto en el código intente lo siguiente.

  • Depuración -> Windows -> Módulos
  • Encuentra la DLL para el proyecto en el que está interesado en
  • Botón derecho -> Símbolos de carga -> seleccionar la ruta a la .PDB para su otro proyecto
+1

la casilla específica fue sin marcar ya. Lo que noté, sin embargo, es que ingresa en un método de la biblioteca externa, pero se interrumpe cuando trato de llamar a un método que es parte de una interfaz. – Konstantinos

+0

Es posible que deba dirigirse a las propiedades de una DLL y asegurarse de que Copy Local esté configurado en True. De lo contrario, los módulos no podrán encontrar el .pdb para su referencia. –

+0

* Just My Code * no parece marcar la diferencia (puedo saltar al código externo incluso si está habilitado), pero encontrar el módulo en el depurador me ayuda. – TheOperator

0

[según Martin Beckett, el tipo que me envía esta respuesta]

puede depurar en una biblioteca externa.

En la pestaña de configuración del proyecto, busque 'directorios de estudio visual' en el campo 'código fuente' que incluya la ruta a las fuentes openCV. Luego asegúrese de que los archivos .pdb para cada dll de depuración estén en el mismo directorio que el dll.

12

Esto me ha molestado por algún tiempo. Lo que generalmente termino haciendo es reconstruir mi biblioteca externa usando el modo de depuración, y luego copio tanto .dll como el archivo .pdb en el contenedor de mi sitio web. Esto me permite ingresar al código de la biblioteca.

+0

También es lo que he estado haciendo durante mucho tiempo también. – IbrarMumtaz

5

Ejecuto dos instancias de Visual Studio: una para el dll externo y otra para la aplicación principal.
En las propiedades del proyecto de la DLL externa, establezca las siguientes:

Eventos de generación:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

Depuración:

  • Iniciar programa externo: C:\<path-to-main>\bin\debug\<AppName>.exe

  • directorio de trabajo C:\<path-to-main>\bin\debug

De esta manera, cada vez que genere la DLL externa, ésta se actualiza en el directorio de la aplicación principal. Si presiono depurar desde el proyecto del dll externo, la aplicación principal se ejecuta, pero el depurador solo llega a los puntos de interrupción en el dll externo. Si selecciono la depuración desde el proyecto principal, la aplicación principal se ejecuta con el dll externo más recientemente construido, pero ahora el depurador solo llega a los puntos de interrupción en el proyecto principal.

Me doy cuenta de que un depurador hará el trabajo para ambos, pero me resulta más fácil mantener las dos rectas de esta manera.

4

asumir el camino de

Proyecto A

C:\Projects\ProjectA 

Proyecto B

C:\Projects\ProjectB 

y la DLL de ProjectB está en

C:\Projects\ProjectB\bin\Debug\ 

para depurar en ProjectB de ProjectA, haga lo siguiente 's con DLL DLL de .PDB a la ProjectA'

  1. Copia B directorio de compilación s.
  2. Ahora depure ProjectA. Cuando el código llegue a la parte en la que necesita llamar al método o eventos de dll, etc. durante la depuración, presione F11 para ingresar al código del dll.

NOTA: No deje de copiar el archivo PDB

Cuestiones relacionadas