【发布时间】:2011-03-15 12:02:12
【问题描述】:
我有一个在 .Net framework 4 上运行的应用程序,我的应用程序运行托管和非托管代码。 UDP 套接字与自定义通信堆栈一起使用,以与我们的自定义硬件通信。当应用程序从 Visual Studio 运行时,一切都很好,但是当它自己运行时,它经常冻结。我已经在 Windows XP SP3 和 Windows 7 SP1 上看到了这种行为。当应用程序被冻结时,我可以看到它在我的大多数线程中都卡在了 ntdll.dll 中。我在另一个问题线程中被告知这是正常的,死锁仍然是由我的代码引起的。
这很难调试,因为我只能附加到应用程序并在本机模式下暂停它,所以我看到的只是反汇编。我正在寻找任何可以帮助我的提示。那么,有没有人知道什么会导致应用程序在直接运行时与使用 F5 从 Visual Studio 运行时冻结?我在某处读到,在托管代码中,GC 的行为不同,有什么区别?此外,对于非托管代码,我收集到内存的初始化方式不同。又有什么区别呢?
非常感谢任何帮助!
Seb
【问题讨论】:
-
你能下载ntdll.dll的符号吗?这至少会告诉您在附加调试器时您的应用程序卡在什么功能上?如果您加载了足够多的符号,那么调用堆栈开始看起来很有意义。也许这可以说明您的问题。
-
只是为了确保:当您“自行”运行应用程序时,您是在运行调试版本还是发布版本?
标签: c# .net c++ visual-studio-2010 freeze