开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4226|回复: 3
收起左侧

[C#图文教程] 转载 多线程的那点儿事(之多线程调试)

[复制链接]

结帖率:100% (5/5)
发表于 2012-6-27 11:18:10 | 显示全部楼层 |阅读模式   山西省临汾市
   软件调试是我们软件开发过程中的重要一课。在前面,我们也讨论过程序调试,比如说这里。今天,我们还可以就软件调试多讲一些内容。比如说条件断点,数据断点,多线程断点等等。
  1. print?#include <stdio.h>   
  2. int value = 0;   
  3.    
  4. void test()   
  5. {   
  6.     int total;   
  7.     int index;   
  8.    
  9.     total = 0;   
  10.     for(index = 0; index < 100; index ++)   
  11.         total += index * index;   
  12.    
  13.     value = total;   
  14.     return ;   
  15. }   
  16.    
  17. int main()   
  18. {   
  19.     test();   
  20.     return 1;
复制代码
(1)数据断点
    所谓数据断点,就是全局变量或者函数中的数计算的过程中,如果数据值本身发生了改变,就会触发断点。这里的数据有两种,一个是全局数据,一个函数内部的数据。

以全局数据value为例:
    a)按F10,运行程序,获取value的地址;
    b)Alt+F9,选择【DATA】->【Advanced】;
    c)在【Expression】中输入DW(0x0043178),【ok】回车;
    d)F5继续运行程序,则程序会在value发生改变的时候停住。


以局部数据total为例,
    a)按F10,运行程序,获取value的地址;
    b)Alt+F9,选择【DATA】->【Advanced】;
    c)在【Expression】中输入total,在【Function】输入test,【ok】回车;
    d)F5继续运行程序,则程序同样会在total发生改变的时候停住。


(2)条件断点
    条件断点和数据断点差不多。只不过,数据断点在数据发生改变的时候就会断住,而条件断点只有在满足一定的条件下才会有断住。比如说,我们可以让test子程序在index==5的时候断住。

    a)按F10,运行程序,获取value的地址;
    b)Alt+F9,选择【DATA】->【Advanced】;
    c)在【Expression】中输入index==5,在【Function】输入test,【ok】回车;
    d)F5继续运行程序,则程序同样会在index==5的时候停住。


(3)多线程调试
    在VC上面对多程序的调试比较简单。如果想要对程序进行调试的话,首先F10,开始运行程序。其次,我们需要等线程创建之后才能设置断点,不然我们看到的程序只有main函数一个thread。
    a)单击【Debug】,选择【threads】,那么我们就可以开始多线程调试了;
    b)如果需要对某一个thread挂起,单击对应的thread,选择【suspend】即可;
    c)如果需要对某一个thread重新调度,单击对应的thread,选择【resume】即可;
    d)如果需要查看特定thread的堆栈,那么选择那个thread,然后【Set Focus】,关闭threads对话框,在堆栈窗口中即可看到;   
    e)如果某个线程被挂住,那么此时所有的线程都挂住了,如果你step运行,所有的threads都会参与运行;
    f)如果需要对某一个thread进行调试,那么需要对其他的thread进行suspend处理  。


总结:
    1)看内存、看堆栈、条件断点、数据断点需要综合使用,
    2)编程越早调试,越好,
    3)先编写好单线程程序,再编写好多线程程序,
    4)对于多线程来说,模块设计 > 编程预防 > 调试 > 事后补救。


结帖率:100% (4/4)

签到天数: 24 天

发表于 2012-6-27 11:51:22 | 显示全部楼层   湖南省益阳市
这是易语言的教程吗?

点评

不是的. 不过编程的思想可以借鉴一下.   内蒙古自治区鄂尔多斯市  详情 回复 发表于 2012-6-27 11:58
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2012-6-27 11:58:01 | 显示全部楼层   内蒙古自治区鄂尔多斯市
千年 发表于 2012-6-27 11:51
这是易语言的教程吗?

不是的.
不过编程的思想可以借鉴一下.
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2012-8-2 15:58:33 | 显示全部楼层   江苏省南京市
癫痫发作有哪些状态?
仅有意识障碍:应与失神发作进行鉴别,发作时的意识障碍多在1分钟以上,而失神发作多在1分钟以内。想了解更多癫痫发作时注意事项点击>>>>郑州癫痫 郑州癫痫病  郑州癫痫病医院

(2)识别性症状:以记忆障碍最为常见。有的病人对本来陌生的人或物产生熟悉的感觉,称“似曾相识”感。有的对熟识的人或环境,莫名其妙地产生陌生感觉。

(3)情感障碍:河南治疗癫痫最好的医院专家介绍患者可产生发作性的情感异常,像突然感到忧伤、愤怒、恐惧、大祸临头、末日来临等。想了解更多癫痫发作时注意事项点击>>>>郑州癫痫 郑州癫痫病  郑州癫痫病医院





回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表