2009-06-08 23 views
7

Quiero iniciar un proceso en estado suspendido. ¿Hay alguna manera de hacer esto usando solo herramientas estándar que vienen con Windows XP? ¿Hay alguna herramienta liviana de terceros?¿Hay alguna forma de iniciar el proceso en estado suspendido?

problema que estoy tratando de resolver:
tengo una aplicación que quiero para depurarlo utilizando Visual Studio 2005. Tengo la versión de depuración necesarias archivos * .pdb y tengo todas las fuentes de referencia de éstos *. archivos pdb. No quiero crear una solución vacía que ejecutará esa aplicación para mí, por lo que estoy tratando de adjuntar a este proceso después de que se lanzó desde otro lugar. Alguna parte del código que quiero depurar se ejecuta al comienzo del proceso de inicio, por lo que quiero ejecutarlo en modo suspendido, adjuntar un depurador y luego reanudarlo.

+0

me escribió una herramienta, que permiten hacerlo: TTP: //github.com/burlachenkok/process_tool (Algunos chicos strnge - Martin Clayton, McCygnus, Vega, Stephen Leppik borran mi post) me – bruziuz

Respuesta

8

No estoy muy seguro de lo que intenta hacer con su pregunta, pero quizás usar el depurador ntsd que viene con XP lo ayude a hacer lo que desee (de manera predeterminada, ntsd cargará el proceso y se detendrá en la primera instrucción).


De la información actualizada en su pregunta, me gustaría sugerir la descarga del Debugging Tools for Windows package de Microsoft y depurar el material de inicio en WinDbg -la son algunas cosas que Visual Studio es mejor en, pero también hay algunas cosas que WinDbg es mejor que Visual Studio (WinDBg es un depurador muy potente).

o simplemente puede cargar el programa en el depurador de Visual Studio (sin solución) desde la línea de comandos:

devenv /debugexe yourprog.exe <arguments> 
+0

Me gustaría señalar que en el ejemplo, se encuentra en la misma carpeta que yourprog.exe. Esto es importante porque el [directorio de trabajo] (https://en.wikipedia.org/wiki/Working_directory) se configurará en su directorio actual. Eso es lo que la mayoría de las aplicaciones esperan, porque eso es lo que Explorer hace de manera predeterminada.Pueden surgir problemas si utiliza la ruta completa al exe y se encuentra en una ruta diferente (por ejemplo, c: \), luego debe esperar a que VS se inicie y luego haga clic con el botón derecho en el exe en la solución, seleccione propiedades y establezca el directorio de trabajo allí. También puede establecer los argumentos de línea de comando allí. – nohwnd

7

Puede escribir fácilmente una aplicación que lo hará por usted. Use la función CreateProcess(), configure el indicador CREATE_SUSPENDED en los parámetros dwCreationFlags.

Para su tarea específica la aplicación podría hacer lo siguiente: llamar a CreateProcess() para iniciar la aplicación y verificar el código de error, luego llamar a MessageBox() para indicarle que adjunte el depurador, luego de presionar un botón en el cuadro de mensaje (MessageBox() regresa), llame a ResumeThread() para reanudar la aplicación.

+0

Sé que puedo, pero creo que es mejor usar herramientas estándar (si las hay). – okutane

+0

Escribí una herramienta, que permite hacerlo: ttps: //github.com/burlachenkok/process_tool (Algunos tipos extraños - Martin Clayton, McCygnus, Vega, Stephen Leppik borraron mi publicación) – bruziuz

1

En cuanto a las herramientas de 3 ª parte ligeros:

Sysinternals Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

& hellip; le permite suspender y reanudar procesos. No puede "lanzarlos" suspendidos, pero puede ser útil para su propósito de todos modos. Es una descarga gratuita.

+0

Actualmente lo estoy usando para suspender la aplicación depurada temprano, pero esto no es lo que quiero. – okutane

+0

Escribí una herramienta, que permite hacerlo: ttps: //github.com/burlachenkok/process_tool (Algunos tipos extraños - Martin Clayton, McCygnus, Vega, Stephen Leppik borraron mi publicación) – bruziuz

Cuestiones relacionadas