2011-04-26 84 views
5

如果我去调试 - >开始不调试我的WPF应用程序运行正常,但如果我去调试 - >开始调试,那么UI将消失,这将在调试下的输出窗口:WPF UI只在调试时崩溃

程序 '[6744] UI.exe:托管 (v4.0.30319)' 已经退出,代码 -1073740791(0xc0000409)

没有引发异常或任何东西。为何会发生这种情况?我正在使用Prism库,所以我不确定它是否与此相关。

如果我手动将调试器附加到进程,我可以调试而不会崩溃。

+1

当您执行Debug - > Start Without Debugging,然后附加到要调试的进程(Debug-> Attach to Process或类似的东西)时会发生什么情况。你真的可以调试吗? – Skrymsli 2011-04-26 00:18:15

+2

根据[this](http://www.febooti。com/products/automation-workshop/online-help/events/run-dos-cmd-command/exit-codes /) – jfs 2011-04-26 00:26:24

+0

@Skrymsli确实可以调试。 – user404068 2011-04-26 00:53:34

回答

0

在对象初始化过程中(堆栈溢出或任意内存不足情况),您可能会有堆损坏异常。这主要是由P/Invoke方法或其他不安全的代码造成的。如果您没有使用任何不安全的代码,请查看您使用的第三方库作为错误来源。

1

在我的情况下,我有同样的问题。当我将“程序集名称”更改为最大42个字符时,我的应用程序被编译...

我认为这很疯狂,但工作。

0

如果您正在使用PRISM,如果Containers中的任何一个(设置为区域)有内容,则可能会发生一些错误。每个区域必须是空容器控件或空项目控件。

对于调试和发布模式,Prism有一些不同的配置,这可能是一个原因。尝试逐行分析您的XAML代码文件,其中包含区域控件,并检查标记是否为空。确保容器为空的最佳方式是创建短标签版本

例如,试试这个

<ContentControl /> 

,而不是这个

<ContentControl></ContentControl> 
0

我在多线程应用程序类似的问题。我试图找到解决方案,但没有成功。如果你的应用使用sime类型的多线程 - 问题可能在其中。请检查您的UI是否与主线程运行在同一线程中...

+0

这不仅仅是一个答案,而且可能对OP以外的任何人都没有帮助。也许如果你扩展了这个想法来演示它,或者给出了一种方法来确认或排除这个问题。 – 2012-10-29 15:42:43

0

如果已安装此类软件,则可能是由Microsoft EMET(增强型缓解体验工具包)​​实用程序(http://support.microsoft.com/kb/2458544)导致的此问题。

检查应用程序事件日志中是否有错误,如“应用程序名称:UI.exe .EMET检测到EAF缓解并将关闭应用程序:UI.exe”

如果你有这样的错误 - 尝试配置或只需卸载EMET :-)

0

我有同样的问题,从86到“任何CPU”改变“目标平台”,它工作正常。但只适用于VS2010,不适用于VS2013