2011-11-17 9 views
47

Tengo el programa .NET que no se puede ejecutar desde Visual Studio por alguna razón (archivo de Excel creado a partir de un proyecto de plantilla de Excel 2010) para el cual necesito depurar eventos de inicio.¿Cómo conectar Visual Studio a un proceso que aún no se ha iniciado?

Si deseo depurar los eventos posteriores a la inicialización del programa, no hay ningún problema. Ejecuto el programa desde el explorador, adjunto el proceso a Visual Studio y agrego algunos puntos de interrupción en el código. Pero aquí, necesito poner puntos de corte en los eventos de inicio. Lo que necesito es poder adjuntar procesos a Visual Studio que no dependan de un PID, sino de un nombre de proceso específico o de cualquier otra solución que funcione.

Por supuesto, agregar un Thread.Sleep(1000) en mis eventos de inicio para darme un poco de tiempo para adjuntar el proceso en Visual Studio está fuera de cuestión.

Gracias.

Respuesta

70

¡En realidad puedes! Pero no te apegas a eso, lo comienzas. En las propiedades de su proyecto, en la pestaña de depuración, tiene la posibilidad de especificar un programa externo. Solo tienes que introducir la ruta del programa que usted está comenzando (por ejemplo: Excel)

+3

+1 Lo he usado tantas veces – stijn

+2

¡Gracias por el truco! Funciona perfectamente – Ucodia

+3

Buena solución, pero solo tenga en cuenta que golpear F5 no funciona en este caso. En su lugar, haga clic con el botón derecho en el proyecto correspondiente y haga clic en 'Depurar> Iniciar nueva instancia' en el menú contextual. –

3

Si no hay ningún proceso, Visual Studio no puede adjuntar a él.

Sin embargo, puede configurar el programa de inicio de su proyecto para que sea algo más que el resultado de su proyecto.

+0

Ya investigué si lo que quiero hacer es correcto, y de hecho lo es. Mi situación no es un caso habitual de depuración de Visual Studio. Tengo un proyecto de plantilla de Excel 2010 desarrollado en Visual Studio y las hojas de plantilla tienen eventos de inicio. Ejecuto esta plantilla desde Visual Studio, agrego algunos datos en mis hojas de Excel y guardo el archivo en el disco. Entonces, la única forma en que puedo abrir este archivo que también depende del ensamblaje de la plantilla es abrirlo desde el explorador, por lo tanto no puedo depurar los eventos de inicio en este caso y, por supuesto, tengo un procesamiento de datos al inicio como enlace de datos. – Ucodia

13

que fue depurando un C++ plug-in en un proceso generado externamente que se estrelló al lanzar una excepción en el arranque y esto funcionó perfectamente para mí:

Agregue el Reattach Extension for Visual Studio gratis. Pídale que se vuelva a conectar al nombre del proceso antes de que se lance. Aparecerá un cuadro de diálogo modal que dice que está esperando que se inicie el nombre del proceso.

Ahora inicie el proceso y el depurador de Visual Studio se conectará inmediatamente, atrapando excepciones y golpeando puntos de interrupción.

+0

¡Gran extensión, gracias! – Ucodia

+0

¡Mil veces sí! – itslittlejohn

4

Encontré esta respuesta cuando estaba buscando algo similar. En mi caso, no podía simplemente usar el ejecutable como el programa de inicio de mi proyecto porque tenía que iniciarse en un entorno muy específico que no podía reproducir fácilmente (namly: started from cygwin).

Eché un vistazo a la extensión Reattach como suggested by mrstrange y también a la extensión Attach To Anything muy similar ... pero mi ejecutable parecía cerrarse demasiado rápido para que las extensiones lo notificaran y adjuntasen.

Lo que finalmente me ayudó fue la siguiente: https://stackoverflow.com/a/4042545/1560865, que hace referencia al artículo de MSDN How to: Launch the Debugger Automatically, que a su vez, se enumeran los siguientes pasos:

  1. Iniciar el Editor del Registro (regedit).
  2. En el Editor del registro, abra la carpeta HKEY_LOCAL_MACHINE.
  3. Navegue a las opciones de ejecución del archivo HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ currentversion \ image.
  4. En la carpeta Opciones de ejecución de archivos de imagen, busque el nombre de la aplicación que desea depurar, como myapp.exe. Si no puede encontrar la aplicación que desea depurar:
    a.Haga clic con el botón secundario en la carpeta Opciones de ejecución de archivos de imagen, y en el menú contextual, haga clic en Nueva clave.
    b. Haga clic con el botón derecho en la nueva clave y, en el menú contextual, haga clic en Cambie el nombre. c. Edite el nombre de la tecla al nombre de su aplicación; myapp.exe, en este ejemplo.
  5. Haga clic con el botón secundario en la carpeta myapp.exe, y en el menú contextual, haga clic en Nuevo valor de cadena.
  6. Haga clic con el botón derecho en el nuevo valor de cadena y, en el menú contextual, haga clic en Cambiar nombre.
  7. Cambie el nombre a depurador.
  8. Haga clic con el botón derecho en el nuevo valor de cadena y, en el menú contextual, haga clic en Modificar. Aparecerá el cuadro de diálogo Editar cadena.
  9. En el Cuadro de datos de valor, tipo vsjitdebugger.exe.
  10. Haga clic en Aceptar.
  11. En el menú Registro, haga clic en Salir.
  12. El directorio que contiene vsjitdebugger.exe debe estar en la ruta del sistema. Para agregarlo a la ruta del sistema, siga estos pasos:
    a. Abra el panel de control en la vista clásica y haga doble clic en Sistema.
    b. Haga clic en Configuración avanzada del sistema.
    c. En Propiedades del sistema, haga clic en la ficha Advanced.
    d. En la ficha Advanced, haga clic en Variables de entorno.
    e. En el cuadro de diálogo Variables deMedio Ambiente, bajo variables del sistema, seleccione Ruta, a continuación, haga clic en el botón Editar .
    f. En el cuadro de diálogo Editar variable de sistema, agregue el directorio al cuadro Variable value. Use un punto y coma para separarlo de otras entradas en la lista.
    g. Haga clic en Aceptar para cerrar Editar variable de sistema cuadro de diálogo.
    h. Haga clic en Aceptar para cerrar el cuadro de diálogo Variables de entorno . i. Haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades del sistema .
  13. Ahora, utilice cualquier método para iniciar su aplicación.Visual Studio se iniciará y cargará la aplicación

Espero que esto ayude a los demás en el futuro.

2

Siga estos pasos si tiene Visual Studio 2017:

  1. Archivo> Abrir> Proyecto/Solución
  2. Elija su .exe
  3. Test> iniciar la depuración

Mucho más fácil que otras sugerencias: no tiene que meterse con las propiedades del proyecto, y no se necesitan extensiones.

+0

Pero tendrá que decirle a Visual Studio dónde están los símbolos de depuración, si no los encuentra automáticamente –

+0

fácil de hacer en 5 segundos, me encanta. Gracias – ComradeJoecool

Cuestiones relacionadas