2010-07-07 9 views
3

關於關閉應用程序的主窗體(我調用它的很多方法等)的異常,它是好吧,但如果我只是運行exe文件它會拋出一個異常。如果我從IDE運行我的應用程序並想要關閉它,調試一個只發生在exe但不是IDE

那麼你對我提出的調試方法是什麼?正如我說的,當我從IDE運行它,它是好的,沒有發生錯誤

+1

開始與一些debug命令,好醇」打印報表。這是一所古老的學校,有點笨重,但它可能會有所幫助。在您認爲問題可能發生的幾個地方運行,看看打印出來的東西是什麼樣的。 – Kaili 2010-07-07 21:04:52

+1

如果告訴我們什麼是異常情況會有幫助。完整的堆棧跟蹤更可取。 – 2010-07-07 21:15:17

回答

3

兩件事我能想到的嘗試:

  • 從IDE外部運行應用程序,但然後附加到進程。這可能是從調試器啓動時的環境會以某種方式不同
  • 使用ADPlus(參見我先前的職位here趕上崩潰轉儲這樣你就可以對其進行分析後
1

我有a solution寫在C + + - CLI應該很容易移植到C#。

如果它的主要功能本身內發生的事情,你嘗試過包裝所有的代碼在:

try 
{ 
    main(); 
} 
catch(System.Exception^ e) 
{ 
    // do something 
} 

道歉的C++ - 我的回答ISH-內斯 - 這是一個很長的時間,因爲我寫的任何C#;-)

2

找出什麼是例外,開始。你能看到異常細節嗎?它是否提供附加到調試器的選項?你能發現異常並記錄下來嗎?

+0

謝謝,附加到過程技術工作,對不起,我不得不接受另一個更早的答案,這也提出了附加到過程技術 – Bohn 2010-07-07 21:18:25

2

附加調試後你得到了程序啓動。這將確保任何的副作用,如啓動目錄,託管流程和JIT的優化不能被調試程序的影響。

啓動程序。工具+附加到進程。

+0

謝謝,附加到過程技術工作,對不起,我不得不接受另一個早期的答案,也提出了附加到過程技術 – Bohn 2010-07-07 21:15:38

+0

今天Upvotes很難得到,我在前面。 – 2010-07-07 21:51:36

1

你應該能夠附加全局異常處理程序:

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

,然後創建一個函數來處理異常:

private void Application_ThreadException(object sender,System.Thread.ThreadExceptionEventArgs e) { 
    // Do whatever here 
} 
+0

謝謝,附加到過程技術工作,對不起,我不得不接受另一個更早的答案,這也提出了附加到過程技術 – Bohn 2010-07-07 21:17:52

+0

這聽起來很有趣。代碼中的最佳位置是什麼,我可以添加此代碼? – Bohn 2010-07-08 13:33:44

+0

在Load Event或構造函數中執行它 – Icemanind 2010-07-08 16:11:31

相關問題