2011-03-28 13 views
6

** mensaje fue editado, más información a continuaciónNo se puede conectar con el proceso en .NET 4.0

que he acabo de ver dos grandes videos sobre Advanced Dotnet Depuración (por Brian Rasmussen) y yo estoy tratando de repetir algunos pasos, pero simplemente no saben cómo proceder con el error tis:

An attempt to set a processes DebugPort or ExceptionPort was made, 
but a port already exists in the process. 

he encontrado algunas respuestas en Google y por lo general entienden lo que dice el error pero simplemente no entienden un hecho extraño: cuando compilo mi aplicación simple < .NET 4.0, puedo adjuntar como muestra la película, tratando de hacer lo mismo después de compilar la orientación de .NET 4.0 me impide adjuntar.

Una de las respuestas de google dice "intenta adjuntar desde windbg usando el modo no invasivo" pero ... Brian no usa ninguna de esas casillas de verificación. Simplemente funciona en sus videos.

¿Cuál es la diferencia? ¿Dónde está la trampa? ¿Es Windows 7 vs Vista? Quizás algunas configuraciones de compilación diferentes importan?

Estoy usando MS VS 2k10 con MS SDK con Windbg x86 descargado de msdn y símbolos configurados correctamente para el servidor http. El sistema es MS Vista x86.

recursos (tiempo exacto> = 08:15): http://channel9.msdn.com/posts/MDCC-TechTalk-Advanced-NET-Debugging-part-2

Editar: Error muestra cuando se fija a proceso que se ejecuta desde VS. Al intentar adjuntar al proceso que se ejecutó/fuera VS, windbg no muestra ningún contenido.

Edit2: Windbg tenía algunos problemas refrescantes en mi sistema. Utilizando algunas veces la opción de menú "Windows \ [Desacoplar | Dock all]", pude ver el contenido del proceso adjunto, que faltaba.

Así que la única pregunta ahora es: cuál es la diferencia cuando se conecta al proceso iniciado a partir VS, cuando se ha compilado en vez usando objetivo < 4.0 y otra vez = 4,0? ¿Por qué cuando se dirige 4.0 windbg no se puede conectar al proceso en modo no "no invasivo". ¿Qué ha cambiado en VS 2k10?

+0

Cómo no puedo votar esto :) Gracias por las amables palabras. –

+0

Después de una hora de búsqueda en Google, he encontrado uno de los problemas similares de respuesta en stackoverflow. ¿Cómo me sorprendió, al verte, como un respondedor, y comprobar que estuviste en línea hace 15 minutos? Estaba casi seguro, responderá a esta pregunta;) ¿Mencioné que los videos son geniales y muy útiles? Sigue haciendo un gran trabajo, Brian. Gracias por compartir su conocimiento. – qlf00n

Respuesta

8

Supongo que está depurando desde Visual Studio (F5) y luego tratando de adjuntarlo. Solo puede tener un depurador activo a la vez, por eso es que obtiene este error. Si desea iniciar el proceso desde VS, ejecútelo sin depuración (Ctrl-F5). Si haces eso, deberías poder adjuntar desde WinDbg.

EDITAR: Lo siento, me perdí el punto sobre varias versiones de .NET que se comportan de manera diferente en este sentido, por lo que voy a tratar de responder a sus preguntas de nuevo. La razón por la que "simplemente funciona" en el video es porque utilizo la ejecución sin depuración cada vez que inicio desde VS. Entonces, si simplemente desea seguir los ejemplos en los videos, todo lo que necesita hacer es ejecutar sin depuración.

Empecé a usar WinDbg/SOS en CLR2 y x86. Lanzar un proceso x86 .NET desde VS en ese momento desencadenaría el error, por lo que tuve el hábito de simplemente iniciar sin depurar.

Sin embargo, como ha descubierto, hay escenarios en los que realmente puede conectarse a un proceso que VS está depurando. Puedo reproducir los escenarios que describes, pero también puedo adjuntar a un proceso x64, .NET 2 iniciado con la depuración desde VS2008, pero no puedo adjuntarme al mismo proceso si la plataforma está configurada en x86.

Aparentemente hay diferencias sutiles que no conozco, y no parece estar relacionado exclusivamente con la versión .NET, ya que puedo adjuntarlo a un proceso x64 .NET2 incluso si está debajo del control del depurador VS.

Voy a actualizar mi respuesta si encuentro detalles adicionales.

+0

Intento entender, ¿por qué puedo adjuntarme al proceso, que se inició desde VS (con depurador, sin usar ctrl-F5) cuando el destino de .NET es <4.0? Cambiar la compilación de destino a 4.0 genera el error cuando intento adjuntarlo. La única diferencia aquí es la plataforma .NET dirigida. – qlf00n

+0

Gracias por verificar esto en su plataforma x64. No estaba seguro de si esto sucede solo en mi configuración. – qlf00n

Cuestiones relacionadas