visual studio punto paso interrupción interrupcion depurar depuracion debuggear como actualmente activará .net debugging process-explorer

.net - paso - punto de interrupcion visual studio



¿Buscando el directorio actual durante la sesión de depuración de Visual Studio? (3)

¿Cómo puedo encontrar el directorio actual para una aplicación .NET que se ejecuta en el depurador de Visual Studio?

Actualización 1 . Para que quede claro: no quiero cambiar el código ni obtener información en el propio programa, solo quiero obtener información sobre la aplicación que se está depurando.

Al depurar una aplicación de Windows Forms .NET (VB.NET y C # mixtos) no estaba seguro desde qué ubicación se estaba leyendo un archivo XML. Esperaba que el directorio actual fuera el directorio de la aplicación. Sin embargo, al usar Process Explorer, las propiedades del proceso dan como resultado:

D: / Archivos de programa (x86) / Microsoft Visual Studio 9.0 / Common7 /

(Haga clic derecho en el proceso / Propiedades / pestaña Imagen / Directorio actual).

Al pasar el cursor sobre el proceso en la vista principal de Process Explorer se reveló un resultado diferente (vea a continuación una captura de pantalla):

D: / dproj / DTASCall / DTASuperCharge / bin /

¿Que es correcto?

El inicio de la aplicación independiente muestra el directorio actual esperado,

D: / dproj / DTASCall / DTASuperCharge / bin /

en la ventana de propiedades del proceso de Process Explorer.

Captura de pantalla anotada de Process Explorer:

Texto alternativo http://www.pil.sdu.dk/1/until2039-12-31/PEdiscrepancy_2009-09-02.png


Dentro de tu código, llama a la función.

System.IO.Directory.GetCurrentDirectory()

De forma predeterminada, a menos que haya cambiado las propiedades de depuración de su proyecto, el directorio actual comenzará como el directorio bin / Debug de su proyecto (desde donde se ejecuta el archivo .exe).


En Visual Studio, en la configuración del proyecto en la pestaña de depuración, puede configurar el "Directorio de trabajo" si lo desea.

Para determinar el directorio de trabajo actual en código o en la ventana inmediata en un punto de interrupción, intente

System.IO.Directory.GetCurrentDirectory()


La mejor manera es ejecutar la aplicación en WinDbg (el depurador de Windows), adjuntarla al proceso y ejecutar el comando !handle . Cada archivo abierto tendrá un identificador asociado. Al descargar todos los manejadores para el proceso correspondiente, verá la ruta del archivo correspondiente.

Aquí hay un ejemplo:

!handle 0 f process-id

Reemplace la ID de proceso con el valor de su ID de proceso. En lugar de la identificación del proceso, también puede utilizar la dirección del proceso. Si esto no muestra el objeto de archivo, entonces el identificador de archivo ya se ha cerrado. En este caso necesitas rastrear los manejadores. Esto se puede hacer con el comando !htrace .