《Win32多线程程序设计》学习笔记 第12章 调试

本文介绍了多线程程序调试的方法,包括对假设进行验证、利用VC调试器支持的线程对话框功能、采用运转记录及内存记号技术来追踪程序运行状态等。调试多线程程序需要耐心、决心和创造力。

有计划的对付错误

在每一个你的假设指出做检验工作。进入一个函数时,确认所有状态,不要只是检查指针是否合法;如果可能,检查一下指针所指结构中的数据是否一致。

线程对话框

VC调试器支持多线程的情况。我们可以挂起要调试的线程之外的所有线程,从而将调试焦点放在某个线程身上。

运转记录

 就是使用输出如printf将程序的运行状态输出出来,用于调试,这些输出一般输出到标准输出,很容易重定向到文件中。在stdout中记录运行过程,并不能抱枕你看到的输出次序就是实际的运行次序,这是由于多线程版本的C Runtime library使用互斥保证每次只有一个线程使用stdout,所以在运行和写入stdout中间,可能发生context switch。

内存记号(Memory trail)

 将运转记录写向文件中,花费的时间可能会影响多线程的运行结果。将运转记录写到内存中可以改善这些情况,就是内存记号

char gMemTrail[2048];
char * pMemTrail = gMemTrail;
每当想输出某个东西到文件中,就写一个记号到MemoryTrail中
*pMemTrail++ = 'D';

当程序停在一个线程的断点时,我们可以通过查看内存内容来查看设置的内容。

科学方法

 为了将一个多线程版本的程序中的错误除尽,需要三种素养

耐心

决心

创造力

 

 

 

转载于:https://www.cnblogs.com/kwliu/archive/2010/12/25/2195904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值