2009-05-23 20 views
8

Tengo un proyecto vb.net que a veces, cuando se ejecuta en el IDE, se cuelga de repente. Normalmente esto no sería un problema. Simplemente pulse 'pausa', observe los hilos actualmente en ejecución y encuentre el punto muerto (o lo que sea).¿Qué puede hacer que Visual Studio 2008 se bloquee durante la depuración?

Pero ahora me encuentro con una situación en la que el programa no solo se cuelga, sino que al intentar detenerlo se cuelga el visual studio. Para recuperar el control, tengo que matar el proceso del programa que se está depurando, momento en el que Visual Studio vuelve a la vida y dice que no pudo detener la ejecución. Esto es frustrante, porque matar el proceso significa que el estado del programa se pierde (por supuesto), así que no sé dónde se cuelga es.

¿Hay alguna causa común de este comportamiento? ¿Qué debería estar buscando?

+1

¿Encontró una solución para esto? Estoy atrapado con la misma situación exacta ... – Roey

Respuesta

-1

Revisaría el código del programa que se está depurando, estoy pensando que puede haber un bucle infinito o una condición de carrera en el código que está tratando de depurar. Este ha sido el caso para mí en el pasado, especialmente en una computadora portátil de un solo núcleo que solía tener. ¿Puede darnos información sobre dónde cree que está la ejecución en el programa cuando intenta pausar?

+0

Bueno, estoy usando un paradigma sortof-passing. Cada clase de 'complicado para bloquear correctamente' tiene una cola de llamadas que otras clases deben usar para pedirle que haga algo. El programa es un pequeño servidor de juegos. Cuando se bloquea, hay varios sockets que ponen en cola los datos recibidos en un objeto de procesamiento, cuyas colas muestran cierta información de registro en la UI y también vuelven a escribir los datos en los sockets. Eso es lo que me confunde: no debería estar bloqueando la IU, porque trato de evitar mantener bloqueos. Tampoco es que tenga un bucle de cola infinito, porque mi CPU no se dispara. –

0

Revise las revisiones y los service packs. He visto un error relacionado con la programación .net y la eliminación de errores. (VS cuelga para mí cuando la depuración de C++ aplicaciones de 32 bits en sistemas operativos de 64 bits: es a veces.)

3

la búsqueda de una solución específica para un problema de Visual Studio puede ser complicado: http://social.msdn.microsoft.com/Search/en-US/?query=visual%20studio%202008%20hang&ac=3

Además, no todas las revisiones de Microsoft se libera directamente al público. Algunos solo se entregan a clientes cuyos sistemas presentan un problema específico. Entonces debes contactar a Microsoft para obtener la solución. Lo hacen para limitar la desventaja potencial de lanzar una revisión que puede romper algo más. Entonces, si todo lo demás falla, llámalos.

Aquí están algunas otras cosas que me gusta hacer cuando Visual Studio comienza a actuar hasta:

  1. Borrar puntos de interrupción viejo y reloj variables.
  2. Con Visual Studio no ejecutándose, elimine el archivo intellisense (.ncb)
  3. Limpie la solución y luego realice una reconstrucción de todo el código.
6

si su programa instala ganchos globales (que se comunican con la aplicación) - este podría ser el caso. Un gancho intenta comunicarse con su aplicación (que está en pausa por el depurador) y se bloquea. Y el depurador no puede recibir sus mensajes de ventana: punto muerto clásico entre depurador enganchado (con hook dll) y una aplicación de enlace.

+0

Demonios, he pasado mucho tiempo tratando de averiguar qué pasa al depurar una aplicación (usando SetWindowsHookEx). Todo el sistema se bloquea durante el segundo o dos pasos de cada depurador. Desactivar la llamada de enlace hace que el truco (pequeña desventaja: no se puede esperar que el enlace funcione mientras se depura). Gracias por este consejo! – sharpener

+0

Eso lo explicaría ... He estado trabajando con una aplicación COM usando WPF para un complemento de Excel. El depurador puede tardar minutos en llegar a un punto de interrupción, mostrar una excepción lanzada o incluso detener la depuración. Muy frustrante –

0

Acabo de tener un problema muy similar (VS no puede interrumpir la ejecución), utilizando Depurar -> Eliminar todos los puntos de interrupción resuelto el problema.

Cuestiones relacionadas