¿por qué una aplicación que actúa de manera diferente después de VS depurador está conectado?

StackOverflow https://stackoverflow.com/questions/120556

Pregunta

Hay una aplicación de escritorio escrita en c# tratando de gestionar una conexión de socket y fallando, pero tener éxito después de la misma aplicación se adjunta a visual studio.

¿cómo puede ser depurado?

¿Fue útil?

Solución

Este es un ejemplo clásico de temporización.

Si funciona en el depurador, a continuación, significa que usted tiene que re-factor de su código un poco a manejar esto.

Ahora, si usted está aplicación es un socket de servidor que recibe las conexiones de cliente y tratando de generar un hilo para cada una de esas conexiones, usted tendrá que considerar el uso de select() para administrar las conexiones en un solo hilo.

Otros consejos

Yo diría que los problemas de sincronización también tener el depurador se ralentizará el código ligeramente, lo cual podría significar que una condición de carrera no se produzca.

Depurar es tratar de añadir algo de código de registro para su aplicación, yo personalmente uso log4net

Usted no debería tener problemas y con malloc y el estilo, como en la codificación en c#.

si está ejecutando una aplicación web también podría ser que hay una diferencia en el servidor web de cassini en el VS y el que va a implementar.

Generalmente, los problemas de sincronización.Hay subprocesos involucrados?Si C/C++, entonces podría haber un montón de razones, porque de cómo la gestión de memoria de los insectos podrían comportarse.

Usted podría tener variables cuyos valores predeterminados son diferentes cuando se ejecuta en el compilador frente a independiente.Las condiciones de carrera podría ser otra idea si hay subprocesos involucrados.

Si la asignación de RAM a través de malloc o nuevo, a continuación, asegúrese de que la memoria es inicializado correctamente antes de usarlo.

De hecho, hemos detectado un problema similar.El tiempo es una parte crítica de este.Así como tirar no-ops en el código (diferencia principal con w/ depurando código).

Con la programación de la cavidad, parece como si la depuración w/ VisualStudio.Net es como tener una Aplicación adicional.DoEvents() llamadas realizadas.Hemos encontrado que tenemos cosas que no se cumplen (no de depuración) a menos que permitir que el componente de la respiración (por ejemplo,manejar sus propios eventos) por Aplicación de llamada.DoEvents().

Cuando Visual Studio adjunta a su solicitud, el CLR y el JIT tiene sutiles diferencias de tiempo de ejecución de habilitar la depuración.La recolección de basura, por ejemplo, es diferente.

http://stupiddumbguy.blogspot.com/2008/05/net-garbage-collection-behavior-for.html

Podría ser porque estás viendo propiedades con efectos secundarios en el depurador.A pesar de que las otras respuestas aquí son más probable...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top