Windows Practice_文件搜索器(二)_多线程调试
来源:互联网 发布:ps 保留图层导入Ai mac 编辑:程序博客网 时间:2024/06/11 23:18
多线程如何进行调试呢?
上一节中我们滥用多线程,导致扫描结果不正确,并且好费时间也增加,但是,有一点我们也是需要注意的,多线程以后肯定使用的比较较多的,我们怎样才能很好的对多线程进行调试呢?
visual studio集成开发环境给我们提供了一个线程调试的功能。界面如下所示:
当启动的线程比较多的时候,设置断点可能会导致电脑卡死
所以我们在调试多线程的时候,不能在开启很多条线程之后让它中断下来,而是要从一开始就设置断点,一个线程一个线程的开启,并且每开启一个线程,我们要对这个线程进行重命名,否则它们的名字是一样的,都叫ucrtbased.dll,我们根本无法区分那条是那条线程。
对于多线程函数,我们应该很清楚线程函数中的每一行代码的作用,因为我们在调试的时候,主要的精力是放在线程窗口的。
需要注意的是,刚进入main函数时,就有4个线程已经启动了,这是系统中的线程,我们不用管,如下所示:
接下来就f10单步往下走,当第一次进入到线程函数时,我们会看到多了一条线程,并且有一个黄色的箭头表示线程正在运行。
此时,我们就要对此线程进行命名了,一般来说,我们会根据线程启动的顺序的标号进行命名,这里我们就为这个线程重命名为1,然后再接着往下单步调试,当又一次创建线程的时候,如下如所示,此时1号线程还在运行。
此时我们为新创建的线程命名为,继续往下调试,当执行到这一步时,2号线程开始运行了,如下图所示:
继续往下单步执行,直到有创建一条线程为止,如下图所示
然后将新创建的线程重命名为3,就这样依次类推,当我们创建了7、8个线程后,如下图所示:
细心的朋友会发现,怎么少了5号线程了呢?其实我也不太清楚,我是按着顺序一步一步的命名下来的,我觉得是5号线程执行完退出了,这个也不太重要,重要的是,我们可以双击某一个线程来看它当前的运行状态,但是我们一般不要这样做,因为这样就相当于人为的进行了线程的切换。
如下图所示,我们双击8号线程结果:
上面就是我们对多线程调试的方法。希望对广大朋友以及我以后的工作有用。
- Windows Practice_文件搜索器(二)_多线程调试
- Windows Practice_文件搜索器(三)_线程池
- Windows Practice_文件_文件分割器(二)
- Windows Practice_文件搜索器(四)_封装文件扫描器
- Windows Practice_文件_文件分割器(一)
- Windows Practice_文件_文件分割器(三)
- Windows Practice_文件搜索器(一)递归
- Windows Practice_闹钟(二)_简易记事本
- Windows Practice_文件_内存映射(一)
- Windows Practice_文件_文件基础操作
- Windows Practice_文件_注册表操作
- Windows Practice_闹钟(一)_简易记事本
- Windows Practice_闹钟(六)_控件对象
- Windows Practice_内存映射_加载BMP
- Windows Practice_闹钟(三)_作业讲解和GDI概述
- 个人学习总结二多线程文件搜索(界面版)
- Windows Practice_闹钟(四)_GDI对象概述
- Windows Practice_闹钟(五)_GDI绘制工具
- I Hate It HDU
- 计蒜客 多边形面积(pick定理模板题)
- 笔记——最长上升子序列
- JAVA的小知识点
- LightOJ 1282 Leading and Trailing
- Windows Practice_文件搜索器(二)_多线程调试
- poj 3904 莫比乌斯函数灵活运用
- 数据库事物
- csrf js
- 使用NutzDao进行复杂SQL条件查询
- C#人脸识别入门篇--提取人脸特征值及人脸识别
- java基础面试
- HYSBZ(1067) 降雨量(RMQ)
- 构造,析构,赋值运算