有一个用c#编写的桌面应用程序试图管理套接字连接并失败,但在将相同的应用程序附加到visual studio后才能成功。

如何调试?

有帮助吗?

解决方案

这是时间的典型例子。

如果它在调试器中有效,则意味着您必须稍微重新考虑代码以处理此问题。

现在,如果你是app是一个服务器套接字,它接收来自客户端的连接并试图为每个连接产生一个线程,你可能不得不考虑使用select()来管理一个线程中的连接。

其他提示

我认为附加调试器的时序问题会稍微减慢代码速度,这可能意味着没有发生竞争条件。

要调试它,请尝试向您的应用程序添加一些日志记录代码,我个人使用 log4net

当您使用c#编码时,您不应该遇到malloc等问题。

如果您正在运行一个Web应用程序,那么VS中的cassini Web服务器和您正在部署的那个网站服务器也可能存在差异。

通常,时间问题。是否涉及线程?如果是C / C ++,那么由于内存管理错误可能会如何表现,可能会有很多原因。

在编译器下运行时,您可能拥有默认值不同的变量,而不是独立的变量。如果涉及线程,竞争条件可能是另一个想法。

如果您通过malloc或new分配RAM,请确保在使用前正确初始化内存。

我们实际遇到过类似的问题。时机是其中的关键部分。除了在代码中抛出无操作(主要区别与调试代码)。

使用套接字编程,似乎调试w / VisualStudio.Net就像进行了额外的Application.DoEvents()调用一样。我们发现我们有失败的东西(非调试),除非我们通过调用Application.DoEvents()允许组件呼吸(例如处理它自己的事件)。

可能是因为您在调试器中正在观看具有副作用的属性。虽然这里的其他答案更有可能......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top