|
.NET 下调试跟踪线程挂起和程序死循环
作者:Eaglet
.NET 下的程序调试相对C/C++要简单很多,少了那些令人头疼的指针越界的问题。不过当你的程序遇到如下问题时,依然非常棘手:
1. 进程异常终止。解决方案见 .NET 下未捕获异常的处理
2. 内存泄漏或者内存申请后程序始终没有释放。解决方案见 用 .NET Memory Profiler 跟踪.NET 应用内存使用情况--基本应用篇 。如果通过自己编写的程序监控,我将在以后的文章中阐述。
3. 线程因未知原因挂起,比如死锁。
4. 程序死循环。
本文将阐述如果编写程序对后两者故障实时跟踪并报告。
- 首先我们需要一个单独的监控线程来监控需要监控的线程
我做了一个监控类 ThreadMonitor,在开始监控之前,我们将监控线程的优先级设置为最高。
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/a48428ddbc621123de954e36879c3c37.gif)
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/58d1dbf7d3edb833df383e04a3f89710.gif)
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/1433c3455813ebbe554c3f6141275287.gif)
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/1433c3455813ebbe554c3f6141275287.gif)
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/1433c3455813ebbe554c3f6141275287.gif)
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/1433c3455813ebbe554c3f6141275287.gif)
![](/d/file/itjie/<a href=/itjie/NETjishu/ target=_blank class=infotextkey>NET</a>jishu/2014-09-29/8a32641a68ef06b4eca22660debb342f.gif)
NET技术:.Net 下跟踪线程挂起和程序死循环,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。