2011-01-27 8 views
20

Al ejecutar un proceso en el depurador, me gustaría iniciar un proceso secundario en el mismo depurador.¿Cómo iniciar un proceso secundario en la misma sesión de depuración de Visual Studio como padre, programáticamente?

la actualidad, utilizo

Process.Start("sample.exe"); 

quiero que sea algo como esto:

if (Debugger.IsAttached) 
    // start "sample.exe" in the same debugging session 
else 
    Process.Start("sample.exe"); 

que podía pasar una bandera para el proceso hijo que le indica que debe llamar Debugger.Launch(), pero que ganaron no detecta los errores de inicio y da como resultado una sesión de depuración en la que algunas funciones no están habilitadas (como editar y continuar, etc.). Es preferible que el depurador inicie el proceso directamente.

+1

Sospecho que el título de esta pregunta es muy engañoso - está tratando de iniciar este proceso con VS, o con una aplicación de C# que sucede para ser construido usando VS? –

+0

Lo que estás preguntando no tiene sentido. –

+2

El problema es que Visual Studio no se adjuntará automáticamente a los procesos secundarios fuera de la caja. Sin embargo, hay soluciones para eso. –

Respuesta

25

Debe adjuntar el depurador al proceso que está iniciando. Esto podría hacerse:

  1. manualmente desde Visual Studio después de comenzar "sample.exe" seleccionarlo de menú Test> conectar con el proceso ..
  2. adjuntar depurador mediante programación en el interior "sample.exe"
  3. Attaching to a Process using VS.NET Automation Model
  4. ACTUALIZACIÓN: puede entorno de ventanas de configuración para adjuntar depurador cada vez "sample.exe" comienza: Launch the Debugger Automatically (que tendrá que llamar Debugger.Break de todos modos)
  5. Algunos herramienta externa tal

Aquí es código para "sample.exe" para adjuntar depurador:

if (!Debugger.IsAttached) 
    Debugger.Launch(); 
Debugger.Break(); 

Usted debe pasar algún parámetro a "sample.exe" para verificar si tiene que adjuntar el depurador.

Process.Start("sample.exe", "Debug=true"); 
+2

Lanza otro VS. ¿Es posible tenerlo en la misma instancia de VS. – Rohit

+0

Bueno, nunca pensé en esto. Lanzar otro VS es un comportamiento predeterminado. Por cierto, encontré una buena solución para iniciar el proceso en modo de depuración sin modificarlo. –

+3

@lazyberezovsky pero esto requiere abrir nuevos VS. ¿Cómo podemos hacerlo en la misma instancia de Visual Studio si el proyecto de proceso hijo ya existe en la misma solución? Gracias – AFgone

0

Suponiendo que sample.exe sería el anfitrión de código que desea depurar, puede utilizar las propiedades del proyecto -> Configuración de depuración - elija la acción como un programa externo y proporcionar camino hacia sample.exe. El VS iniciará este ejecutable y le adjuntará el depurador.

+3

Es un inicio programático que es necesario ya que es parte de la lógica del programa. – Rohit

1

puede cambiar las propiedades de su solución para iniciar varias aplicaciones.

una explicación está aquí Run Multiple projects

El artículo de MSDN está aquí MSDN Article on running multiple projects

+0

Esta es una buena solución si todos los procesos comienzan al mismo tiempo. Sin embargo, si un proceso secundario puede comenzar en algún momento posterior, no funcionará. –

Cuestiones relacionadas