【问题标题】:WPF UI crashes only when debuggingWPF UI 仅在调试时崩溃
【发布时间】:2011-04-26 00:11:06
【问题描述】:

如果我转到 Debug -> Start without Debugging 我的 WPF 应用程序运行良好,但如果我转到 Debug -> Start Debugging 则 UI 将消失,这将出现在 Debug 下的 Output 窗口中:

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

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

如果我手动将调试器附加到进程,我可以在不崩溃的情况下进行调试。

【问题讨论】:

  • 当您执行 Debug -> Start without Debugging 然后附加到要调试的进程(调试-> 附加到进程或类似的东西)时会发生什么。那你真的可以调试了吗?
  • 你有一个堆栈溢出根据this
  • @Skrymsli 似乎确实可以进行调试。

标签: c# .net wpf xaml prism


【解决方案1】:

就我而言,我有同样的问题。当我将“程序集名称”更改为最多 42 个字符时,我的应用程序正在构建...

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

【讨论】:

    【解决方案2】:

    您可能在对象初始化期间遇到堆损坏异常(stackoverflow 或任意内存不足情况)。这主要是由 P/Invoke 方法或其他不安全代码引起的。如果您没有使用任何不安全的代码,请检查您用作错误源的 3rd 方库。

    【讨论】:

      【解决方案3】:

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

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

      例如试试这个

      <ContentControl />
      

      而不是这个

      <ContentControl></ContentControl>
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 这更像是一个评论而不是一个答案,并且可能对除了 OP 之外的任何人都没有帮助。也许如果您扩展了演示它的想法,或者提供了确认或排除此问题的方法。
        【解决方案5】:

        如果您安装了 Microsoft EMET(增强型缓解体验工具包)​​实用程序 (http://support.microsoft.com/kb/2458544),可能会导致此问题。

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

        如果您遇到此类错误 - 尝试配置或卸载 EMET :-)

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,将“平台目标”从 x86 更改为“任何 CPU”,它工作正常。但仅适用于 VS2010,不适用于 VS2013

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-29
            • 2014-12-01
            • 2016-06-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-04-25
            相关资源
            最近更新 更多