班级规模及环境--热线:4008699035 手机:15921673576( 微信同号) |
每期人数限3到5人。 |
上课时间和地点 |
上课地点:【上海】:同济大学(沪西)/新城金郡商务楼(11号线白银路站) 【深圳分部】:电影大厦(地铁一号线大剧院站)/深圳大学成教院 【北京分部】:北京中山学院/福鑫大楼 【南京分部】:金港大厦(和燕路) 【武汉分部】:佳源大厦(高新二路) 【成都分部】:领馆区1号(中和大道) 【沈阳分部】:沈阳理工大学/六宅臻品 【郑州分部】:郑州大学/锦华大厦 【石家庄分部】:河北科技大学/瑞景大厦 【广州分部】:广粮大厦 【西安分部】:协同大厦
最近开课时间(周末班/连续班/晚班):2020年3月16日 |
实验设备 |
☆资深工程师授课
☆注重质量
☆边讲边练
☆合格学员免费推荐工作
★实验设备请点击这儿查看★ |
质量保障 |
1、培训过程中,如有部分内容理解不透或消化不好,可免费在以后培训班中重听;
2、培训结束后,授课老师留给学员联系方式,保障培训效果,免费提供课后技术支持。
3、培训合格学员可享受免费推荐就业机会。 |
课程大纲 |
|
软件调试原理与实践培训
软件调试原理与实践培训
培训对象:软件开发工程师
学员基础:具有一定编码经验
培训目标:
CPU 的调试支持
操作系统的调试支持
编译器的调试支持
调试器
应用程序崩溃和用户态转储
栈调试
堆调试
内核调试
系统崩溃和转储
验证器
多线程调试
可调试性
培训大纲:
一.CPU 的调试支持
调试设施的简要历史,支撑软件调试核心功能硬件基础:断点指令、调试寄存器、陷阱标志
二.操作系统的调试支持
为什么要支持调试,比较Linux 和Windows 这两个操作系统支持用户态调试和内核态调试的基本设施,包括用户态调试模型,异常分发和管理,调试信息输出,错误记录,错误报告机制等内容。
试验1:通过内核调试理解操作系统内核
三.编译器的调试支持
本部分将以Visual Studio 和GCC 这两大著名编译器为例,比较介绍:调试符号的产生过程、存储格式和使用方法,编译期检查、运行期检查等内容。
四.调试器
比较介绍WinDBG 和GDB 调试器的:特点、实现模型,重要调试功能的实现方法,使用它们执行典型调试任务的方法,比较介绍常用的调试命令。
五.应用程序崩溃和用户态转储
介绍应用程序崩溃的完整过程和调试方法,转储的基本知识,如何使用ADPLUS 自动产生用户态转储,用户态转储的常用命令和技巧。
试验2:JIT 调试
六.栈调试
栈有关的基本概念,栈的自动增长机制,栈上的缓冲区溢出,检测缓冲区溢出的方法。
七.堆调试
内存管理的多层次架构,比较Windows 和Linux 系统的堆管理器,导致堆问题的典型原因以及调试方法。
八.内核调试
内核调试模型,深入解析Windows 操作系统的内核调试引擎(KD):工作原理,关键,操作,调试协议),KD 的变体等;
比较介绍Linux 下的内核调试设施
九.系统崩溃和转储
系统崩溃概览,
Windows 蓝屏崩溃(BSOD)的过程,Linux 的Panic 过程(包括产生call
stack和寻找函数符号的方法),
系统转储,分析系统转储的方法
试验3:分析系统转储
十.验证器
验证器(verifier)的目标,Windows 操作系统的驱动验证器:工作原理,关键实现,用途,思考借鉴和推广方法
十一.多线程调试
控制线程的常用命令,关键区,volatile 关键字,死锁案例解析,CPU 的同步支持(lock 前缀,特别指令),互锁操作
十二.可调试性
被调试程序的可调试性对于提高调试效率有着重要意义,如何在软件工程实践中提
高软件的可调试性:包括可观察性、可辨别性、可追溯性、自动报告错误等。
|