vc调试多线程程序的方法

1、对一条特定的线程进行调试  
        Visual   C++调试器支持多线的情况,如果你在许多线程都调用的函数中  
        设置一个断点,每当一个线程遭遇到此断点,调试器就会在线程之间循环切换  
        有个方法可以避开这个问题,就是挂起所有线程,除了你感兴趣的那条(要调试  
        的那条),在调试器中打开[Debug]菜单并选择[Thread]你就可以获得一个线程对  
        话框,在这里你可以挂起所有的线程,把你要调试的线程留下来,单独调试他  
   
  2、运转记录  
        就是让程序的关键部分显示出其发生的活动的一种方法!  
        就是在程序的关键部位(某一时刻你想知道他的状态)加上一些输出语句,比如  
        printf       TRACE     等等,可以将信息输出到屏幕,也可以重定向到文件中,不要  
        用一些控件比如ListBox,因为ListBox也是一个窗口,在他的内部有自己的消息  
        循环,向ListBox中输出调试信息的时候,会引起不必要的线程切换(从当前  
        线程切换到ListBox的消息循环)非常耗时!这对多线程这种对时间很敏感的程序  
        来说有可能会影响运行的结果!  
        在GUI程序中也是可以拥有console窗口的,由于console窗口由系统的设备驱动  
        程序负责,即使你的程序当掉或在调试器中停止console窗口仍有反应!  
   
  3、内存记号(Memory   Trails)  
        上面的两种方法执行的时间都稍长,有可能影响到程序运行的结果,Memory   Trail  
        属于一种比较低阶的技术!  
        是用Memory   Trail的方法:  
        你必须产生一个足够大的全局缓冲区,以及指向该缓冲区的全局指针,例如:  
        char   gMemTrail[16384];  
        char   *pMemTrail   =   gMemTrail;  
        当你想输出某些东西到屏幕上或文件中时,你就写个记号到MemTrail中  
        例如:  
        *pMemTrail++   =   'f';  
        你的程序的每一个追踪点都应该写一个不同的记号,不论什么时候你想要,或是  
        程序当掉之后,你可以利用调试器看看   memory   trail中的内容!  
   
  3、硬件调试寄存器  
        只适用于Intel机器!  
        这个俺就不多说了,基本上很少用!
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值