- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.4.2 线程检查器实验
本实验学习如何使用英特尔 程检查器来调试 Win32*多线程程序并解决数据竞争、死锁问
题。
(1)寻找潜在的数据竞争
编译和运行Potential 程序的单 程版本
打开\code\Thread Checker\potential_serial 文件夹,双击potential_serial.sln 文件;
在Build 菜单里选择Configuration Manager,然后选择Debug 模式;
在Build 菜单里选择Build Solution,编译相关文件;
在Debug 菜单里选择Start Without Debugging,运行程序。
编译和运行Potential 程序的多 程版本
打开\code\Thread Checker\potential_win 文件夹,双击potential_win.sln 文件;
在Build 菜单里选择Configuration Manager,然后选择Debug 模式;
按如下方式配置项目属性:
选中Debug 模式 (/Zi)
链接时保留Debug 信息 (/DEBUG)
禁止自动优化(/Od)
使用线程安全系统 (/MDd)
使用二进制文件可重定位功能 (/fixed:no)
在Build 菜单里选择Build Solution,编译相关文件;
在Debug 菜单里选择Start Without Debugging,运行程序;
注:Potential 程序的多 程版本中粒子数量和循环次数大幅度减少,以方便英特尔线程检
查器运行。
运行Intel®VTune 性能分析器;
点击New Project;
在Category 栏选择Threading Wizards,在下拉框中选择Intel Thread Checker Wizard;
选 择 刚 才 编 译 好 的 可 执 行 文 件 路 径 ( \code\Thread
Checker\potential_win\Debug\potential_win.exe),点击Finish 按钮,开始运行 程检
查器;线程检查器分析完毕后会显示一些诊断报告,双击可观察相应代码;
问题:
为什么会出现这些冲突?
(2)解决数据竞争问题
解决前一个实验里英特尔线程检查器诊断出来的那些线程错误。哪些变量可以作为 程中的
共享变量?哪些变量应该作为每个 程的私有变量?哪些变量出于线程同步的考虑,必须保
护起来?
修改好代码中的错误后,重新编译运行,并用 程检查器检测,直到没有诊断错误为止;
当消 代码中的 程问题后,把粒子和循环数量改为之前单线程版本的数量,重新编译运行。
问题:
修改好的多 程程序运行结果和之前的单线程程序一样吗?
(3)检测死锁问题
打开\code\Thread Checker\Deadlock\文件夹,双击Deadlock.sln 文件;
在Build 菜单里选择Configuration Manager,然后选择Debug 模式;
按照上一小节实验里的方法配置项目属性;
在C/C++菜单中,选择Command Line,填入/Qtcheck,如图所示;
在Build 菜单里选择Build Solution,编译相关文件;
在Debug 菜单里选择Start Without Debugging,运行程序。
问题:
运行结果正确吗?为什么?
用 程检查器分析程序
运行英特尔 程检查器;
点击New Project;
在Category 栏选择Threading Wizards,在下拉框中选择Intel Thread Checker Wizard;
选 择 刚 才 编 译 好 的 可 执 行 文 件 路 径 ( \code\ Thread
Checker\Deadlock\Debug\Deadlock.exe),点击Finish 按钮,开始运行 程检查器;
运行结果可能是下面两张图其中一张,因为死锁并不一定每次都发生,如图8.11、8.12 所
示:
图8.11 诊断报告显示死锁并未发生,但线程检查器仍然检测出潜在的死锁风险,
图中用黄色标出
图8.12 程检查器检测到了死锁发生并列出来,
此时用户需要强制关闭程序运行的DOS 窗口
双击诊断列表中的任意一条 (错误或者警告),研究相应代码和错误或警告发生的原因。
您可能关注的文档
- 4月1日鱼沼守门周间天気情报-asahi.ppt
- 4论说文逻辑技巧.ppt
- 5GCloudVR业务体验标准白皮书.PDF
- 5时间序列平滑预测法.ppt
- 5月28日第5回発表.ppt
- 6.3资讯科技工业区位.ppt
- 7月16日言语理解与表达细节理解与语句表达.PDF
- 923-929网络安全信息与动态周报.PDF
- 95永续特色课程─大手牵小手.ppt
- ABB电气产品数据中心行业应用方案建造安全绿色的智慧数据.PDF
- 广东省东莞市2024-2025学年八年级上学期生物期中试题(解析版).pdf
- 非遗剪纸文创产品开发经理岗位招聘考试试卷及答案.doc
- 广东省东莞市2024-2025学年高二上学期期末教学质量检查数学试题.pdf
- 体育安全理论课件图片素材.ppt
- 3.1 公民基本权利 课件-2025-2026学年道德与法治八年级下册 统编版 .pptx
- 广东省潮州市湘桥区城南实验中学等校2024-2025学年八年级上学期期中地理试题(解析版).pdf
- 大数据运维工程师岗位招聘考试试卷及答案.doc
- 广东省深圳市福田区八校2026届数学八年级第一学期期末教学质量检测模拟试题含解析.doc
- 广东省潮州市湘桥区城基初级中学2024-2025学年八年级上学期11月期中考试数学试题(解析版).pdf
- 广东省潮州市湘桥区城西中学2024-2025学年八年级上学期期中地理试题(解析版).pdf
最近下载
- 农田改造滴灌蓄水池工程施工组织设计.pdf VIP
- 轨道交通装备智能化运维中的智能巡检与状态监测技术报告.docx
- 工资代付委托书(范本).docx VIP
- 征兵体检口吃测试文案.docx VIP
- 《国家基层糖尿病防治管理指南(2025)》解读PPT课件.pptx VIP
- RS Components 电工电料 PLC 附件 VBA-4E3A-KE-ZE R 使用说明.pdf VIP
- 2012东风本田 CR-V 服务技术指导手册(上册).pdf VIP
- 附件4:AESC国际猎头协会——《人才候选人之权利》.pdf VIP
- 附件3:AESC国际猎头协会——《候选人测评及背景调查程序》.pdf VIP
- 附件1:AESC国际猎头协会——《职业道德公约》.pdf VIP
原创力文档


文档评论(0)