春暖花开
雪化了,花开了,春天来了
posts - 149,comments - 125,trackbacks - 0

今天看的调试的这一章主要是针对多线程程序的调试。多线程程序运行的不确定性,使其调试起来就像抓蝴蝶一样,你捉摸不透它驻足的位置。

书中给了一些建议和方法:

一是有计划地对付错误。

对应用程序展开适当的调试,应该是远在你使用调试器之前就开始了。多多使用ASSERT调试措施。(ASSERT背后的概念是安全和速度之间的交换。程序运行因此运行得比较慢,但是Debug Build的制造就是为了调试,所以可以理解)在每一个你的假设之处做检验工作。进入一个函数时,确认所有状态。不要只是检查指针是否合法;如果可能,检查一下指针所指的结构中的数据是否一致。

二是Bench Testing

其实这种方法就是先撇开多线程的环境,测试程序逻辑的正确性。如果OK了,然后再考虑与线程相关的东西。

三是线程对话框

这里主要讨论了对一个特定的线程如何调试,方法是挂起所有的线程——除了我们关注的那个。书中介绍的方法在vs 2005我没有找到。

四是日志记录

这里主要是在控制台窗口显示一些运行信息,我们可以使用printf等函数在控制台输出一些信息来查看线程的运行次序。

五是内存记号

使用内存记号的好处就是降低彼此干扰的可能性。但是也要注意它不是同步操作,可能会因为两个线程的同时写入引来问题。

六是硬件调试寄存器

 

前面的这六种方法我也只用过三种,有一些还真是第一次见到。不过不怕下次搞不定问题的时候可以拿来进行尝试,来抓一抓隐藏在程序中的“臭虫们”。

 

成功消除多线程程序的“臭虫”,作者说需要具备三种素养:决心、耐心、创造力。同时也不要蛮干,要采用科学的方法:观察、预测、测试。

 

总结一下:借助方法,观察现象,大胆预测,勇敢尝试,完备测试。

 

项目中也碰到了多线程的使用。未来可能多线程的使用会越来越多,不能停留在完成功能和任务上,应该多思考多测试。避免多线程的不可确定性带来的一些困扰。

 

学习书籍:《Win32 多线程程序设计》侯捷译

posted on 2009-08-21 17:19 Sandy 阅读(1663) 评论(2)  编辑 收藏 引用 所属分类: windows学习

FeedBack:
# re: 多线程程序中的调试
2009-10-28 20:55 | liujinbyte
提供了很好的几个思路, 谢谢!  回复  更多评论
  
# re: 多线程程序中的调试
2010-05-31 23:38 | Apple
很多人都喜欢几米的画,我看过好几个技术博客,都有几米的画  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理