2011-04-26 83 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