2010-01-09 36 views
7

我有一个多线程的.Net C#应用程序,它使用Direct3D 9/10和XAudio2。 (Direct3D只能通过一个线程访问,对于XAudio2也是如此Direct3D不是问题导致错误在DX9或DX10模式下显示,但其行为没有任何变化。)没有任何异常的应用程序崩溃

有时(有些区域给出这个问题随机)这个应用程序崩溃在一个相当不寻常的方式。即使应用程序是通过带有调试器的visual studio启动的,它也会崩溃而不会给出任何类型的异常。 (它开始说“applicationname.svchost.exe崩溃了,等等..等等。你想调试吗?”,如果我按是它告诉我“你不能调试已关闭的应用程序”。)

There没有办法找出崩溃的原因是什么?因为我已经没有想法了,调试器根本没有给我任何信息。没有例外,我甚至不能执行堆栈跟踪或转储。 P(我假设是一个同步问题(甚至认为在那个领域我只做顺序工作......),但嘿为什么不发起异常?:|)

在问题发生我正在卸载重新加载一系列与小说有关的类(在顺序核心线程中,所以我怀疑它可能是一个问题),并通过XAudio2启动一个新的音乐(顺便说一下,什么是m有关XAudio2的超线程考虑?从多个线程调用是否安全?)

感谢您的帮助。

P.S.有一个软件可以连接到我的监控所有电话,并告诉我什么是崩溃前的最后一次通话?

+0

您应该发布程序崩溃时所得到的确切消息。我怀疑它实际上是说“坠毁”。错误消息中可能有一些有用的线索。 – Jacob 2010-01-10 00:34:36

+0

没有消息,没有VS调试器给出的异常,消息是“应用程序name.svchost.exe停止工作,你想调试吗?”,如果我按是开始另一个视觉工作室,并告诉我“你不能调试应用程序已关闭“ – feal87 2010-01-10 08:07:13

回答

4

你应该尝试使用Windbg,分析故障转储应该指出你的问题,如果你怀疑是正确的,并且它是一个同步问题,问题的原因可能很难发现。

+0

我发现了使用Windbg的问题,这是与XAudio2的一些疯狂的错误。谢谢! – feal87 2010-01-12 15:32:40

2

您是否在Windows管理面板中检查过事件日志? 任何类型的所有错误总是以最少的细节记录在本节中。

有一次,我有一个崩溃的应用程序没有例外,我发现唯一的帮助是事件日志查看器,我发现崩溃的来源是一个StackOverflowException。

+0

检查,没有错误与我的应用程序或视觉工作室有关... – feal87 2010-01-09 23:02:42

+0

机会是错误将在事件日志中,也许在一些晦涩的服务或DLL? – AUSteve 2010-01-10 08:26:59

+0

不,没有消息。 – feal87 2010-01-10 10:06:18

相关问题