求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
 
 
全部课程 | 技术学院 | 管理学院 | 嵌入式学院 | 在线学院  
成功案例   品质保证  电话 English
追随技术信仰

随时听讲座
每天看新闻
 
   
成功案例
英特尔 SCRUM-敏捷开
东方证券 基于看板的敏捷方法
亚信 工作量估算
法国电信 基于iproces
赛孚耐 基于Scrum的敏
英国帕吉 基于MyProce
中海油 软件开发过程

相关课程  
统一过程及应用
敏捷过程实践
基于XP/RUP的迭代开发
软件开发过程指南
SCRUM过程实践
敏捷测试-简单而可行
 

软件调试案例精华集锦     3922 次浏览    1418 次 
  报名参课
专家讲师: 张银奎 ——《软件调试》和《格蠹汇编——软件调试案例集锦》的作者
时间地点: 北京、上海、深圳根据报名开班
课程费用: 5000元/人,详见 公开课学习手册
企业内训: 可以根据企业需求,定制内训,详见 内训学习手册
 

本培训通过一系列有代表性的真实案例介绍解决复杂软件问题的调试技巧和有关的软硬件知识。所选案例既有深度,又有较大的广度,从运行模式看有内核态和用户态,从问题的类型来看,有多种原因导致的崩溃和挂死,也有数据混乱,启动、睡眠或者唤醒失败等,从编程语言角度看有C/C++和.Net。本培训专门针对已经有一定调试经验的软件工程师而设计,目标是引领他们将技术水平提升到一个新层次。

 
培训目标
  • 案例:混合调试之右键菜单异常缓慢
  • 实验:转储分析之寻找右键菜单缓慢原因
  • 案例:堆损毁导致的随机崩溃
  • 案例:转储分析之应用程序随机崩溃
  • 案例:随机崩溃之无效句柄
  • 案例:应用程序挂死之陷在内核态
  • 实验:拯救挂死的PowerPoint
  • 案例:.Net程序调试之SDK安装程序死循环
  • 案例:转储分析之双重错误
  • 实验:分析内核态栈溢出导致的系统崩溃转储
  • 案例:文件数据意外混乱
  • 案例:后台服务因段错误崩溃
培训对象:软件开发工程师
学员基础:具有一定开发经验,最好有一定调试基础  
授课方式: 真实案例解析 + 关联知识讲解 + 动手实验
培训内容: 2天
       1.5天Windows案例(用户态(本地代码和.Net)为主,1个内核态案例作为扩展性学习),0.5天Linux案例
以下为Windows案例
案例:混合调试之右键菜单异常缓慢(90分钟)   现场定位Windows资源管理器中右键菜单异常缓慢的原因,介绍如下知识和调试技巧:“本地程序中的托管来客”;混合代码情况下的未处理异常;栈溢出;浮点计算单元和浮点寄存器;浮点异常的延迟性;上下文扩展模块的注册方法;如何调试性能有关的问题。
实验:转储分析之寻找右键菜单缓慢原因(30分钟)
案例:堆损毁导致的随机崩溃(60分钟)   以一个典型的因为字符串类使用不当而导致的堆错误为例,深刻理解进程中的多个CRT堆,堆管理器的脆弱之处,字符串类分配内存的方法,静态链接和动态链接可能产生的影响;分享使用堆的最佳实践。
案例:转储分析之应用程序随机崩溃(60分钟)   以某真实商业软件的低概率崩溃留下的转储文件为例,介绍应对应用程序崩溃的常用调试方法和有关的知识和调试技巧:JIT调试,WER和崩溃转储,没有源代码的情况下定位崩溃点和崩溃原因。
案例:随机崩溃之无效句柄(90分钟)   解析一个因句柄使用不当而导致的应用程序崩溃问题,介绍如何从没有源代码的系统函数入手寻找线索。并介绍Windows系统中关于句柄的调试机制和用法。
案例:应用程序挂死之陷在内核态(90分钟)   以Office程序普遍存在的DDE问题为例,介绍如何结合用户态调试与内核态调试两种手段发现负责软件问题的根本原因;并介绍如何在没有源代码和私有符号的情况下分析函数的参数和理解程序的执行内幕。
实验:拯救挂死的PowerPoint(30分钟)
案例:.Net程序调试之SDK安装程序死循环(90分钟)   分析真实案例——Windows 7 Platform SDK安装程序因为异常处理不当而意外陷入死寻坏,熟悉如下调试工具和技巧:使用WinDBG + SOS扩展分析.Net程序的转储文件;使用ildasm反汇编.Net程序,理解基本的中间代码;理解异常处理机制;思考异常处理机制的深层风险——引入不确定的程序出口。
案例:转储分析之双重错误(90分钟)   分析因为双重错误(Double Fault)而导致的Windows系统崩溃,理解如下知识点:操作系统的任务切换机制;CPU的硬件任务切换;内核态栈溢出;任务状态段TSS,内核态栈溢出; CR2寄存器;CR3寄存器。
实验:分析内核态栈溢出导致的系统崩溃转储(30分钟)
以下为Linux案例
案例:文件数据意外混乱(90分钟)   :分析因为标准文件句柄误用而导致的后台服务进程与驱动程序之间的通信数据混乱案例,介绍如下知识点和调试方法:Daemon,Linux Driver,使用虚拟文件系统与用户态模块通信,标准文件,kprint, dmesg。
案例:后台服务因段错误崩溃(90分钟)   现场演示和分析Linux后台服务意外崩溃的原因,介绍调试Linux下应用程序崩溃的三种常用方法:GDB、dmesg + map文件、插入代码JIT调试。本案例介绍的知识点有:段错误的内在原因,信号和信号处理器,函数调用协议,C标准中关于无原型函数的处理方式,空指针,使用GDB分析栈的常用命令。
实验:定位导致段错误的原因(30分钟)
3922 次浏览   1418 次
其他人还看了课程
高质高效嵌入式软件开发  154 次浏览
代码质量标准与评审方法  5350 次浏览
代码整洁之道-态度、技艺与习惯  7364 次浏览
如何编写高质量代码  4281 次浏览
软件调试原理与实践  4051 次浏览
高质高效嵌入式软件开发  405 次浏览
定制内训




最新活动计划
数据建模方法与工具 12-16[北京]
基于模型系统仿真与验证 12-14 [讲座]
白盒测试技术与工具实践 12-24[线上]
LLM大模型应用与项目构建 12-26[特惠]
UML和EA进行系统分析设计 12-20[线上]
SysML建模专家 1-16[北京]