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

随时听讲座
每天看新闻
 
   
成功案例
某集成电 多核体系的软件仿真
某电力能 设计模式原理及应用
南方航空 软件设计方法与实践
某跨国公 软件设计原理与实
爱立信( 软件设计
Moto 设计模式
北京 软件设计原理与实践

 
全部课程 >开发技能  
软件调试原理与实践    
1095 次浏览  112 次
张老师
著有《软件调试》,Intel研发中心资深程序员、业内资深工程师、内核调试专家
 
时间地点: 北京 上海 深圳 根据报名开班
课程费用:5000元/人 ,详见 公开课学习手册
企业内训:可以根据企业需求,定制内训,详见 内训学习手册



认证方式:
培训前了解能力模型。
培训后进行能力评测:
  • 在线考试
  • 能力分析,给出学习建议
  • 合格者颁发证书,作为职业技能资格证明


    调试是软件工程中的最重要环节之一,大多数程序员的约一半时间都花在调试上,但调试技术的交流与推广却没有得到应有的普遍重视。尤其是比较复杂的调试技术,比如内核调试,远程调试,DUMP 文件分析等,即使很多经验丰富的软件工程师对这些领域也都是比较陌生的。但了解和掌握这些调试技术,以及重要要的调试工具和技巧对提高软件工程师的综合实力却有着事半功倍的作用,是每个软件高手的一门必修课。

    本培训纵览软件调试的整个“生态系统”,从CPU、操作系统、编译器和调试器四个纵向层次上对Windows 和Linux 平台上的调试设施和方法展开横向比较,从调试角度审视Windows,Linux,GCC,Visual Studio,GDB 和WinDBG 等著名平台和工具,既有深度,又有广度。整个培训理论讲解和实验演示紧密结合,由著名软件调试书籍《软件调试》一书的作者设计所有讲义并亲自讲授。

     

    培训目标:

    • CPU 的调试支持
    • 操作系统的调试支持
    • 编译器的调试支持
    • 调试器
    • 应用程序崩溃和用户态转储
    • 栈调试
    • 堆调试
    • 内核调试
    • 系统崩溃和转储
    • 验证器
    • 多线程调试
    • 可调试性
    培训对象: 软件开发工程师
    学员基础:具有一定编码经验
    授课方式: 定制课程 + 案例讲解 + 小组讨论,60%案例讲解,40%实践演练

    培训内容:2天

    CPU 的调试支持

    调试设施的简要历史,支撑软件调试核心功能硬件基础:

    • 断点指令、
    • 调试寄存器、
    • 陷阱标志
    操作系统的调试支持

    为什么要支持调试,比较Linux 和Windows 这两个操作系统支持用户态调试和内核态调试的基本设施,

    • 包括用户态调试模型,
    • 异常分发和管理,
    • 调试信息输出,
    • 错误记录,
    • 错误报告机制等内容。

    试验1:通过内核调试理解操作系统内核 (30 分钟)

    编译器的调试支持

    本部分将以Visual Studio 和GCC 这两大著名编译器为例,比较介绍:

    • 调试符号的产生过程、
    • 存储格式和使用方法,
    • 编译期检查、
    • 运行期检查等内容。
    调试器

    比较介绍WinDBG 和GDB 调试器的:

    • 特点、
    • 实现模型,
    • 重要调试功能的实现方法,
    • 使用它们执行典型调试任务的方法,
    • 比较介绍常用的调试命令。
    应用程序崩溃和用户态转储 介绍应用程序崩溃的完整过程和调试方法,
    转储的基本知识,
    如何使用ADPLUS 自动产生用户态转储,
    用户态转储的常用命令和技巧。
    [试验2] JIT 调试(30 分钟)
    栈调试
    • 栈有关的基本概念
    • 栈的自动增长机制,
    • 栈上的缓冲区溢出
    • 检测缓冲区溢出的方法。
    堆调试
    • 内存管理的多层次架构,
    • 比较Windows 和Linux 系统的堆管理器,
    • 导致堆问题的典型原因以及调试方法。
    内核调试

    内核调试模型,深入解析Windows 操作系统的内核调试引擎(KD):

    • 工作原理,
    • 关键
    • 操作,调试协议),
    • KD 的变体等;

    比较介绍Linux 下的内核调试设施

    系统崩溃和转储
    • 系统崩溃概览,
    • Windows 蓝屏崩溃(BSOD)的过程,Linux 的Panic 过程(包括产生call stack和寻找函数符号的方法),
    • 系统转储,分析系统转储的方法
    • 试验3:分析系统转储 (30 分钟)
    验证器

    验证器(verifier)的目标,Windows 操作系统的驱动验证器:

    • 工作原理,
    • 关键实现,
    • 用途
    • 思考借鉴和推广方法
    多线程调试
    • 控制线程的常用命令,
    • 关键区,
    • volatile 关键字,
    • 死锁案例解析,
    • CPU 的同步支持(lock 前缀,特别指令),
    • 互锁操作
    可调试性

    被调试程序的可调试性对于提高调试效率有着重要意义,如何在软件工程实践中提高软件的可调试性:

    • 包括可观察性、
    • 可辨别性、
    • 可追溯性、
    • 自动报告错误等。
     
    1095 次浏览  112 次
    其他人还看了课程
    重构复杂遗留系统的最佳实践  2101 次浏览
    代码整洁之道-态度、技艺与习惯  3957 次浏览
    基于复用的软件开发  542 次浏览
    Python高级编程之高性能与异步IO(AsyncIO)  76 次浏览
    HTML5 and JavaScript  3177 次浏览
    代码质量标准与评审方法  4095 次浏览
    定制内训



    最新活动计划
    [北京]基于模型的设计 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号