求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
 
 
 
开班计划 | 技术学院 | 管理学院 | 嵌入式学院 | 机械 | 军工学院 | 定向培养 | 专家指导  
 电话 English
成功案例   品质保证
 
   
成功案例
某集成电 多核体系的软件仿真
某电力能 设计模式原理及应用
南方航空 软件设计方法与实践
某跨国公 软件设计原理与实
爱立信( 软件设计
Moto 设计模式
北京 软件设计原理与实践

 

全部课程 >开发技能  
软件调试原理与实践    
1729 次浏览  484 次
张老师
著有《软件调试》,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 前缀,特别指令),
    • 互锁操作
    可调试性

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

    • 包括可观察性、
    • 可辨别性、
    • 可追溯性、
    • 自动报告错误等。
     
    1729 次浏览  484 次
    其他人还看了课程
    对抗软件瑕疵的最佳实践  913 次浏览
    精益软件开发原理与实践  1642 次浏览
    软件调试原理与实践  1729 次浏览
    如何编写高质量代码  4142 次浏览
    Python+数据分析+tensorflow  1837 次浏览
    通用软件开发过程指南(一个项目实例)  4500 次浏览
    定制内训


    最新活动计划
    C#高级开发技术 11-8[北京]
    企业数字化转型(数据治理) 11-15[上海]
    嵌入式linux内核、开发、性能优化 11-16[北京]
    大数据平台搭建与高性能计算 11-18[北京]
    代码整洁之道 11-24[北京]
    持续集成测试最佳实践 12-9[北京]