2011-05-20 15 views
5

Tengo una aplicación .NET GUI escrita en C# y una impresora PDF. La impresora PDF tiene un campo donde puede establecer un comando para iniciar una aplicación externa.Cómo depurar una aplicación C# .NET en Visual Studio 2010 que se inició desde otro proceso

En este caso, puedo imprimir un documento con esta impresora y la impresora inicia mi archivo EXE con la ruta de archivo en el archivo PDF generado como argumento. ¿Cómo puedo depurar mi aplicación cuando se inicia desde la impresora?

En Visual   Studio   2010, puedo establecer la información de depuración para los argumentos de línea de comandos, y esto funciona bien. Pero si la aplicación se inicia desde la impresora, la aplicación no funciona bien. Por lo tanto, quiero depurar mi aplicación cuando se inicia desde la impresora. ¿Cómo puedo hacer esto? ¿Hay algún parámetro para iniciar un archivo EXE en modo de depuración o algo como esto?

Respuesta

8

Puede conectarlo a un proceso cuando comienza a usar un pequeño ajuste de registro.

Ir a

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 

Crear una nueva clave con el nombre del ejecutable tal y como aparecerá en Task Manager, por ejemplo, myapp.exe. Debajo de esto, crea un nuevo valor de cadena llamado debugger y configúralo en vsjitdebugger.exe.

Ahora, cuando se desencadena el archivo EXE, aparecerá una ventana preguntando qué depurador asociar.

+0

¡esto puede ser bastante útil! –

+0

Muchas gracias ... esto es lo que estaba buscando. – CubaLibre

+0

¡Tengo un problema! Cuando elimino la entrada del registro creado no tiene ningún efecto. ¡Todavía aparece una ventana y pregunta qué depurador adjuntar! – CubaLibre

9

trate de agarrar el proceso:

http://msdn.microsoft.com/en-us/library/c6wf8e4z.aspx

para insertarse en un proceso en ejecución 1.En el menú Depurar, seleccione Asociar al proceso. Si no hay proyectos abiertos, seleccione Adjuntar al proceso en el menú Herramientas.

2.En el cuadro de diálogo Adjuntar al proceso, busque el programa al que desea adjuntar desde la lista de Procesos disponibles .

a.If el programa que desea de depuración se está ejecutando en otro equipo, primero debe seleccionar el equipo remoto. Para obtener más información, consulte Cómo seleccionar una máquina remota.

b.If el proceso se ejecuta en una cuenta de usuario diferente, seleccione las Mostrar procesos de todos los usuarios comprobar caja.

c.Si está conectado mediante Remote Desktop Connection, active la casilla de verificación Mostrar procesos en todas las sesiones.

3.En el cuadro Adjuntar a, asegúrese de que el tipo de código que va a depurar es en la lista. La configuración automática predeterminada intenta determinar qué tipo de código desea depurar. Si el ajuste automático no es apropiado:

a.Haga clic en Seleccionar.

b.En el cuadro de diálogo Seleccionar tipo de código, haga clic en Depurar estos tipos de código y seleccione los tipos para depurar.

c.Haga clic en Aceptar.

4.Haga clic en Adjuntar.

La lista Procesos disponibles es se muestra automáticamente al abrir el cuadro de diálogo Procesos. Los procesos pueden iniciarse y detenerse en el fondo mientras el cuadro de diálogo está abierto. Sin embargo, los contenidos no son siempre actuales. Puede actualizar la lista en cualquier momento para ver la lista actual de procesos haciendo clic en Actualizar.

Usted se puede conectar a múltiples programas cuando se está depurando, pero sólo un programa permanecerá activo en el depurador en cualquier momento. Puede establecer el programa activo en la barra de herramientas Ubicación de depuración o en la ventana Procesos. Para obtener más información sobre , consulte Cómo configurar el programa actual .

Todos los comandos de ejecución del menú de depuración afectan al programa activo. Puede romper cualquier programa depurado desde el cuadro de diálogo Procesos o romper todos los programas adjuntos del menú Depurar. Para obtener más información, consulte Cómo: Break Execution.

+0

El problema es que el proceso no se está ejecutando. Cuando imprimo un documento, p. Ej. Word, la impresora solo hace un archivo pdf y abre mi exe. Entonces no hay un proceso en ejecución para adjuntar. – CubaLibre

+0

¿cuál es el proceso de host para su aplicación? –

+0

puede adjuntarlo al proceso de host. es decir, cuando depuramos sharepoint en pasado/presente, lo adjuntamos al proceso de IIS. –

1

Considere agregar una llamada a su código que explícitamente solicita que el depurador se adjunte en la ubicación actual. Esto ha estado presente desde Win32 días, y aparece en .NET como System.Diagnostics.Debugger.Break (y System.Diagnostics.Debugger.Launch).

También puede añadir lógica para decidir cuándo activar esta opción si no desea hacerlo la primera vez a través de:

#if DEBUG 
     if (++staticCounter > 3) System.Diagnostics.Debugger.Break(); 
    #endif 

Y, por supuesto, tendrá que desactivar para la producción .

Cuestiones relacionadas