回答
这是一个时机的经典例子。
如果它在调试器中工作,那么这意味着你必须重新分解你的代码来处理这个问题。
现在如果你是一个服务器套接字,它接收来自客户端的连接并尝试为每个连接产生一个线程,你可能不得不考虑使用select()来管理一个线程中的连接。
通常情况下,计时问题。是否有涉及的线程?如果是C/C++,那么可能会有很多原因,因为内存管理错误可能会如何表现。
在编译器下运行时,与独立运行相比,您可能有变量的默认值不同。如果涉及到线程,竞争条件可能是另一个想法。
如果您通过malloc或new分配RAM,那么在使用之前请确保内存已正确初始化。
我会说计时问题也附加调试器会稍微放慢代码,这可能意味着竞争条件不会发生。
调试它,试图将一些日志代码添加到您的应用程序,我个人使用log4net
你不应该有和使用malloc的问题,因为你是在C#编码等。
如果您正在运行Web应用程序,那么VS中的cassini webserver和您正在部署的cassini webserver可能也有所不同。
我们实际上遇到过类似的问题。时机是其中的关键部分。以及向代码中抛出禁止代码(主要区别在于调试代码)。
使用套接字编程,看起来像使用VisualStudio.Net进行调试就像进行额外的Application.DoEvents()调用一样。除非我们通过调用Application.DoEvents()来允许组件呼吸(例如处理它自己的事件),否则我们发现我们有东西会失败(非调试)。
当Visual Studio附加到您的应用程序时,CLR和JIT具有微妙的运行时间差异以启用调试。例如垃圾收集是不同的。
http://stupiddumbguy.blogspot.com/2008/05/net-garbage-collection-behavior-for.html
这可能是因为你看的副作用在调试器的性能。虽然这里的其他答案更可能...
- 1. 为什么在调试器下,Perl的quotemeta()函数的行为有所不同?
- 2. 为什么在这个例子中线程连接的行为有所不同?
- 3. 为什么当我试图调试VS 2008应用程序时,VS 2010调试器会弹出?
- 4. 为什么在完成连接之后不会调用完成?
- 5. iPhone应用程序在连接到仪器vs无仪器vs模拟器的设备上的行为不同
- 6. 为什么Perl BEGIN块在调试器中的行为不同?
- 7. 为什么PDF :: FromHTML在从我的web应用程序调用时行为有所不同?
- 8. 为什么在应用程序处于后台时不会调用回调? 。
- 9. 为什么bash的行为会因为只改变行的解析器的调用方式而有所不同?
- 10. 为什么MonoTouch调试器在一段时间后会断开连接?
- 11. 为什么会话的行为有所不同?
- 12. 为什么我的程序在使用不同的编辑器和编译器时会有所不同?
- 13. JavaScript:为什么警报会使行为有所不同?
- 14. 测试iOS应用程序时,为什么不是所有的应用程序崩溃都会报告?
- 15. 为什么一个局部变量的地址在执行多次时会有所不同,但在使用GDB进行调试时不会有所不同?
- 16. 调试器为什么不运行?
- 17. 为什么我不能调试我的asp.net web应用程序
- 18. 为什么只有在VS 2008的Web应用程序/站点项目中才会出现Oracle连接错误?
- 19. 为什么我的应用程序在调用popToRootViewControllerAnimated后死亡?
- 20. 为什么我不能调试MvvmLight Silverlight应用程序
- 21. 多次运行同一程序时,为什么执行时间有所不同?
- 22. 为什么VS2010调试器会挂起?
- 23. 为什么列表连接的不同行为?
- 24. 为什么会忽略AoG应用程序的调用名称?
- 25. 应用程序在调试器中运行不同
- 26. 为什么不会变量连接?
- 27. 为什么应用程序在未连接到计算机时等待调试程序?
- 28. 为什么仪器不能执行我的Monotouch应用程序?
- 29. 作为VS2008中的不同用户调试应用程序
- 30. 为什么在应用程序运行时调用Sql * plus
这是一个Heisenbug的例子吗? http://en.wikipedia.org/wiki/Heisenbug#Heisenbugs – 2008-09-23 12:11:26
没有它只是我今天遇到的一个应用程序。 – 2008-09-23 12:12:59