問題描述
- 通過點擊程序的方式運行時,關閉程序後,在任務管理器中卻還能找到該程序的線程
- 通過VS來運行程序,關閉程序後,VS顯示調試器還在執行。
- 這有什麼問題呢? 程序沒關掉,就會導致資源未釋放。這樣會導致再次運行程序時,程序無法正常執行(無法啓動,或無法訪問需要的資源)
解決辦法
- 第一步: 中斷程序,
頂部菜單
-全部中斷
- 第二步: 找到程序執行到哪個代碼段了。
- 打開線程窗口,
頂部菜單
-窗口
-線程
這時候,發現程序停在一個dll或pdb處。我們需要進入代碼,按F10
單步執行很多次最終會進入到代碼的,不推薦。現在推薦一種簡單的方法,看線程窗口可以看出來最近執行的有代碼的線程,點擊它就可以進去了
或者注意看診斷工具
-事件
,如下圖。可以看到當前執行位置,往上翻可以找到最近的執行代碼。
- 進入後,給代碼打個斷點,按
F5
自然就會運行到這裏停下了。
- 打開線程窗口,
- 第三步: 單步執行,找到問題所在。個人經驗,一般是有循環還在執行,這種情況,可以通過一個bool值來參與循環條件,只要在關閉程序時,改變這個bool值就可以控制程序的退出了