2012-01-13 77 views
3

我想弄清楚在一個項目中發生了什麼變化,現在導致應用程序在我關閉正在調試的應用程序時不退出調試器。我也注意到未處理的異常不再調用未處理的異常處理程序,我不確定它是否相關。爲什麼visual studio在應用程序退出時退出調試器?

+0

請告訴我們它是什麼類型的應用程序(網絡應用程序,共享點,桌面應用程序或其他)。 – 2012-01-13 20:53:15

回答

6

當所有線程退出時,調試器退出。你可能已經創建了一個額外的線程,並沒有做任何事來終止它。

這將解釋未處理的異常未捕獲:如果它們發生在不同的線程上,則不會在主線程上看到它們。

2

大多數情況下應用程序並未實際終止。你有沒有其他線程在運行?在所有前臺線程終止之前,應用程序不會關閉。

10

這可能是由於其他線程沒有設置爲後臺線程,導致應用程序保持活動狀態。後臺線程將在應用程序執行時終止,而前臺線程將使應用程序的其餘部分保持活動狀態直至完成。檢查線程(S)是負責

一種方法是在調試器,如下所示:

  • 在調試器
  • 「退出」您的應用程序運行你的應用程序。
  • 等到應用程序應該退出,但是還沒有
  • 闖入使用「暫停」按鈕
  • 打開「新語絲」調試窗口
  • 尋找在此窗口中的所有線程的應用程序。有可能會有一個或幾個線程顯示。看看你能否通過窗口中的信息來識別它們是什麼。
  • 它也可能有助於打開「堆棧」調試窗口,然後依次雙擊「線程」窗口中的每個線程並查看「堆棧」窗口的內容。您可能能夠看到任何卡住的線程正在嘗試做什麼。