2012-09-29 9 views
5

Actualmente estoy intentando iniciar un depurador para un proceso que se inicia externamente (no desde Visual Studio). Parece que no puedo ejecutar realmente un depurador, ya que parece que no pasa nada. En el proceso, agregué este código:Debugger.Launch no funciona

Debug.Assert(Debugger.IsAttached == false, "Should be no debugger"); 
if (!Debugger.IsAttached) 
{ 
    Debug.Assert(Debugger.Launch(), "Debugger not launched"); 
} 
Debugger.Break(); 
Debug.Assert(Debugger.IsAttached == true, "Debugger should be attached"); 

Las afirmaciones están ahí para verificar que no estoy loco. Al principio, la propiedad IsAttached devuelve falso como esperaba. Luego llamo al Debugger.Launch, y devuelve verdadero. Según la documentación de MSDN de Debugger.Launch, dice que solo devolverá true si tiene éxito en el lanzamiento del depurador, o si ya está conectado. Verifiqué que uno no estaba conectado, por lo que debe haber lanzado uno.

El punto de inflexión nunca se golpea, y la segunda verificación falla (la propiedad IsAttached devuelve falso). También intenté dormir después de Debugger.Launch para dedicarle algo de tiempo, fue en vano.

¿Alguna sugerencia?

+0

He editado su título. Por favor, consulte: "[¿Las preguntas deberían incluir" etiquetas "en sus títulos?] (Http://meta.stackexchange.com/questions/19190/)", donde el consenso es "no, no deberían". –

+0

Algo no funciona con su configuración de vsjitdebugger. Pruebe esto: http://social.msdn.microsoft.com/forums/en-US/vsdebug/thread/9a539c40-1869-44b8-9aed-9f9d7d402d7c/ Si eso no ayuda, utilice ProcMon y compare una buena máquina con el malo –

+0

Es bueno saber sobre las etiquetas. Probaré el artículo Hans y veré qué puedo encontrar. – Trevor

Respuesta

0

La respuesta: Visual Studio 2010 Express

Express no admite (y sin un nivel de hackery) unir a un proceso para depurarlo. Esto significa que las funciones de Depuración Just In Time son no disponibles. Supongo que esto también es lo que hace que el Depurador.Launch falle (aunque devuelve verdadero, y supongo que es porque técnicamente intentó mostrar un diálogo, pero no se instalaron depuradores).

3

Esa es una respuesta incorrecta, ya que no puedo encontrar ninguna referencia a VS Express en la pregunta y tuve el mismo problema al usar VS2013 Pro.

Aunque el artículo this dice que el problema está resuelto en VS2013, incluso si está usando VS2013 como yo, busque la pestaña de arreglos temporales allí enumerada. Solucioné el problema al usarlo. Más información en el enlace.

Voy a vincular another article que me puso en la dirección correcta, tal vez es útil también.

Resumen: Cambie el valor AppIDFlags del Just-In-Time clave de registro depurador de 0x28 a 0x8 Visual Studio (o 0x20 acuerdo con el artículo anterior, ensayo y error, supongo) Se clave de registro HKEY_CLASSES_ROOT \ AppID \ {E62A7A31-6025-408E-87F6-81AEB0DC9347}

7

Tengo el mismo problema en Visual Studio 2013 Premium. La respuesta de Eric me puso sobre cómo resolverlo. Pero no necesitas cambiar el registro.

  1. Vaya a Herramientas -> Opciones -> Depuración
  2. abrir el elemento y seleccionar sólo en depurador tiempo
  3. Si ve en la parte baja de la ventana de un color amarillo advertencia sobre ese otro depuración se está utilizando diferente al visual studio. Si ve eso, marque todas las casillas Just in Time para devolver a VS para que sea el programa de depuración.

Eso es todo.!

Options Just in Time debugger

+0

Esto funcionó para mí. Estoy usando Just In Time Debugger casi a diario, pero un día dejó de funcionar y las casillas de verificación mencionadas no estaban marcadas, es decir, algo que no funcionaba. Aunque no tengo idea de qué. –

3

Quizás esto ayuda a alguien en el futuro. Tuve el mismo problema, que Debugger.Launch no pareció hacer nada. Resulta que alguien más se conectó a mi máquina y el depurador adjuntó un mensaje de error en su entorno, no en el mío. Los eché del sistema y eso lo solucionó.