2016-11-10 46 views
0

我面臨很多的問題exe exe崩潰的生產服務器,但是我想轉儲文件時EXE崩潰與詳細信息日誌。如何手動崩潰的C#代碼

我找到了procdump工具。你可以建議手動崩潰exe的代碼c#,所以可以檢查轉儲日誌中獲得什麼樣的信息。

+4

'拋出新的異常();'<=,然後不捕獲異常下調用堆棧的異常。 – Igor

+0

引發異常?加載其他平臺程序集(x86/x64) –

+0

你在尋找什麼樣的崩潰? – Luaan

回答

5

崩潰是由未捕獲的異常引起的。只需在代碼中輸入一個

throw new Exception(); 

並且不要在任何地方添加try-catch塊。

1

最好的,它不能被捕獲,正在創建一個堆棧溢出異常。這一個將通過嘗試/捕獲...

void MyMethod() 
{ 
    MyMethod(); 
} 
+1

當在__Release__配置(啓用優化)中生成時,它不應該崩潰(由於[tail-call optimizations](https://en.wikipedia.org/wiki/Tail- call_optimization))。 –

+1

你能證實這一點嗎? –

+0

當以這種方式構建時,運行時將選擇通過不爲每次遞歸在調用堆棧上創建一個新的「幀」來優化事件,因此這將變得類似於'here:goto here;'或'while(true) {}'這兩者都不會使應用程序崩潰。例如,通過將代碼粘貼到Visual Studio中進行驗證很容易,請確保在「解決方案配置」下拉列表中具有「發佈」,然後在未進行調試(Ctrl + F5)的情況下運行。 –