2010-03-12 14 views
35

Actualmente tengo la solución A que contiene una base de capa de dominio y la solución B que hace referencia a los binarios de la solución A. ¿Hay una manera de depurar directamente de uno a otro con dos ejemplos de visual estudio abierto (uno para cada solución). He leído que solo puede agregar los proyectos existentes de la solución A a la solución B. ¿Hay alguna otra solución que funcione? He intentado adjuntar directamente la solución A a lo que ejecuta ejecutable en la solución B, pero no me deja conectar varios depuradores a la misma aplicación.Depuración a través de diferentes soluciones en Visual Studio

Debo notar que cuando entro en una parte, aparece automáticamente el código de la solución A en la instancia B de la solución B de Visual Studio para depurar. Supongo que esto es aceptable, pero no puede simplemente establecer puntos de interrupción arbitrarios y espere a que el código los golpee de esta manera.

Gracias

Respuesta

30

No hay forma de tener 2 instancias de Visual Studio depurando el mismo proceso. Esta es una limitación de Windows, y la mayoría de los otros sistemas operativos en ese proceso como máximo puede estar depurando otro.

Es un escenario perfectamente soportado para depurar binarios que no son parte de su solución. Como habrás notado, puedes felizmente entrar en los archivos binarios de la Solución B mientras se depura de una Solución A.

Sin embargo, un elemento que se interpondrá en el camino es la función de depuración denominada "Just My Code". Esta es una característica destinada a minimizar la experiencia de depuración para solo el código en su solución. Ideal para soluciones normales pero malo cuando depura binarios arbitrarios. Es probable que cause muchos problemas alrededor de los puntos de quiebre que está viendo. Usted querrá desactivarlo haciendo las siguientes

  • Herramientas -> Opciones -> Depuración
  • sin comprobar "Habilitar Sólo mi código"
+4

También vea la respuesta de Chris. Puede establecer puntos de interrupción para el código fuente de la Solución A en la Solución B sin agregar proyectos a las soluciones. Apunte Visual Studio a los archivos PDB de A (creados durante la compilación, vea la respuesta de Chris) y luego abra el archivo fuente de A en la Solución B. Puede simplemente abrir o arrastrar y soltar, no es necesario agregarlo a la solución. Una nota, a veces el punto de interrupción se verá vacío (como si no fuera golpeado) hasta que su ensamblaje se cargue, lo que podría ser en tiempo de ejecución. – Vimes

+0

@JohnB Cuando dices "arrastrar y soltar", ¿qué quieres decir? Si arrastro un archivo desde el explorador de soluciones de una instancia de VS 2010 a otra, el único destino de arrastre válido es el editor de texto, y solo pega una copia del nombre de archivo en el documento abierto. Si arrastro la pestaña del editor desde una instancia de VS, no puedo soltarla en la otra. ¿Existe una manera rápida y fácil de hacer esto que no implique jugar con file-> open? – Weeble

+2

@Weeble, arrastro el archivo fuente desde el Explorador de Windows al área de texto de Visual Studio. Para mí, esto abre el archivo. – Vimes

14

Lo que si se carga de forma explícita los símbolos de Solución A?

Si usted va a Herramientas-> Opciones-> Debugging-> Símbolos se puede señalar que en el archivo .pdb de Solución A.

A continuación, puede ver si los símbolos se cargan desde los binarios yendo a Depurar-> Windows-> Módulos durante la depuración.

14

Solo puede tener un depurador depurando un proceso a la vez. Eso significa que solo necesita una instancia de Visual Studio abierta.

Sin embargo, puede simplemente abrir el archivo .cpp/.cs/cualquiera de la Solución B en la copia de la Solución A de Visual Studio y establecer puntos de interrupción. Todavía funcionará aunque esos archivos no sean realmente parte de la solución.

+5

He estado usando VS durante 13 años y acaba de aprender de usted que uno puede simplemente abrir un archivo de origen que no se presenta en las soluciones que se está depurando y todavía permite el ajuste de puntos de interrupción (si se encuentra el pdb y el archivo fuente se encuentra en la misma ubicación y tal vez en otras condiciones, pero aún así lo investigaré más a fondo). Muchas gracias Dean – buckley

1

Hay una solución simple para esto.

Abra ambos archivos de solución y ejecútelos. Detenga la segunda instancia de solución que desee adjuntar para procesar, pero asegúrese de que los puertos se estén ejecutando. Ahora puede adjuntar el proceso de puerto a la primera instancia de solución y depurar como magia.

1

Esto es lo que hice.

Digamos que un proyecto de la solución A hace referencia a un proyecto de la Solución B y quiero depurarlo en el proyecto de la solución B del proyecto de la Solución A.

Solución abierta B en Visual Studio.Establezca las propiedades del proyecto como "Usar servidor Ib local de IIS", establezca la URL del proyecto y cree un directorio virtual.

Abra la Solución A en otra instancia de Visual Studio. Establezca las propiedades del proyecto en "Usar servidor WBS local de IIS" y marque "Usar IIS Express", establezca la URL del proyecto y cree un directorio virtual.

Presione F5 y comience a depurar la instancia de la Solución B de Visual Studio. Luego presione F5 y comience a depurar la solución Una instancia de Visual Studio. Ahora ambas instancias de Visual Studio estarán en modo de depuración. Comience desde la Solución A ahora y debería poder depurar en la Solución B como si ambos proyectos estuvieran en la misma solución.

La clave aquí es "Usar IIS express" para uno y "Local IIS Web server" para el otro proyecto. Esto le permitirá tener dos depuradores corriendo al mismo tiempo.

+0

Esto solo funcionaría si estuviera depurando una aplicación web. Creo que OP está trabajando con ejecutables. –

0

Asegúrese de que .dll y .pdb estén en el contenedor. Podrá depurar a la otra solución abierta en el otro Visual Studio.

Normalmente tenemos una carpeta (por ejemplo, Dependencias) desde donde se hace referencia a los dlls. Coloque el dll en esta carpeta. Los archivos Dlls se envían a esta carpeta cuando creamos el proyecto al que se hace referencia (usando Build events, también hay otras formas).

2

Esto puede ser tarde, pero es para cualquier persona que todavía necesita una solución real y fácil. Simplemente cambie las propiedades de su Solución para usar Configuración de múltiples proyectos de inicio y establezca qué proyecto se iniciará simultáneamente.

Siga este enlace

Debug Multiple Projects at the Same Time in Visual Studio

+0

Sin embargo, hay una diferencia entre iniciar varios proyectos (si necesita un servidor en ejecución, por ejemplo) y simplemente hacer referencia a un proyecto externo para que pueda ingresar al código. –

Cuestiones relacionadas