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

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

相关课程  
统一过程及应用
敏捷过程实践
基于XP/RUP的迭代开发
软件开发过程指南
SCRUM过程实践
敏捷测试-简单而可行
 
全部课程 >开发技能  
软件调试案例精华集锦 
866 次浏览  114 次
张银奎
《软件调试》和《格蠹汇编——软件调试案例集锦》的作者
 
时间地点: 北京、上海、深圳根据报名开班
课程费用: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分钟)
     
    866 次浏览  114 次
    其他人还看了课程
    重构复杂遗留系统的最佳实践  2053 次浏览
    如何编写高质量代码  2760 次浏览
    基于复用的软件开发  509 次浏览
    Python高级编程之高性能与异步IO(AsyncIO)  44 次浏览
    代码整洁之道-态度、技艺与习惯  3920 次浏览
    代码质量标准与评审方法  4061 次浏览
    定制内训



    最新活动计划
    [北京]基于模型的设计 3-6
    [北京]机器学习&TensorFlow+Keras框架 3-13
    [北京]UML +嵌入式系统分析设计 3-15
    [北京]软件架构设计方法、案例与实践 3-20
    [北京]基于Kubernetes的DevOps实践 4-11
    [上海]人工智能,机器学习和深度学习 3-22
    [上海]产品需求分析与管理 3-30
    [深圳]软件开发过程中的质量管理实践 3-29
    中国移动  人工智能、机器学习和深度学习
    知名财险公司  Oracle数据库性能调优
    航天科工某子公司  软件测试架构师
    英特尔  代码整洁与嵌入式C高质量编程
    知名消费金融公司  探索性测试与测试分析
     
     
     

     
    每天2个文档/视频
    扫描微信二维码订阅
    订阅技术月刊
    获得每月300个技术资源
     
    希望我们的资料可以帮助你学习,也欢迎投稿&提建议给我
    频道编辑:sky
    邮       件:sky@uml.net.cn

    关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号