Windows平台高级调试与优化(2018庐山站)

 Linux和Java的大行其道让经典的Windows开发沦为冷门,开发者逐渐减少。但在很多领域,短时间内仍离不开Windows,这使Windows平台上的开发者变得日益珍贵。

 围绕调试和优化两项关键技能,本研习班旨在帮助参加者在以下两个方面快速进阶:(1)对Windows平台的系统机制和困难概念的理解深度,包括IRQL、IRP、两轮异常分发、设备栈和WoW等;(2)使用Windows平台上的各种工具解决典型问题的方法和思路,包括使用WinDBG等调试工具调试各类软件故障(应用程序崩溃、系统蓝屏、死循环和多线程死锁、系统级挂死、内核态和用户态栈溢出、以及用户态堆和内核态池上的各类问题),以及使用WPT和vTune等调优工具发现软件的热点和瓶颈并进行优化。本研习班由《软件调试》和《格蠹汇编》的作者张银奎(Raymond Zhang)亲任教练,现身说法,剖微穷深。

时间:2018年10月19日- 21日(周五-周日)(三天两晚封闭训练,挑灯论剑)

地点:庐山秀峰景区内松雪楼(住)和中正行营(研习)

形式:实战演练、讲解和讨论点评

培训对象:在Windows平台上从事开发或测试的软件工程师、项目带头人和技术经理

主办单位:高端调试网站、上海曜印网络科技有限公司

研习提纲:

第一部分:Windows NT核心特征 (1.5小时)

要点:特殊的FS段,TEB,PCR,地址空间,32位、44位和48位线性地址空间,系统调用,WoW,系统组件,HAL、内核、执行体,重要的驱动程序(KS、DXGKRNL),系统进程(IDLE、SMSS.EXE、WinLogon.EXE),子系统、Win32K,Linux子系统,会话和会话隔离

f4dd8db7fae84e9c2e9479de6b7a8054.png

David Cutler, NT内核之父 (照片来自微软网站介绍Dave的文章)

第二部分:WinDBG精要(1.5 小时)

要点:WinDBG的命令类型,常用命令,命令语法,调试符号,符号文件的种类,符号服务器,定制调试事件的方法和重要的调试命令,软件断点、硬件断点,程序指针飞跃,复杂的断点命令,远程调试,x86寄存器和反汇编技巧

第三部分:内核调试(1 小时)

要点:两种软件哲学,内核调试引擎(结构,重要的函数全局变量,工作原理),五种连接方式,启用方法,PCR,双机用户态调试(Debug WinLogon and CSRSS)

案例:利用多种调试手段追踪微信程序挂死原因(RPC调试)(30分钟)

第四部分:调试启动过程 (1 .5小时)

要点:现场跟踪Windows系统的启动过程,解析其中的重要步骤和关键细节:内核初始化,CPU初始化,执行体的阶段0和阶段1初始化,SMSS,CSRSS和WinLogon,UserInit以及Shell,Win8引入的Hybrid Boot,糟糕的启动菜单和BootIM程序

第五部分:内存管理器 (1 小时)

要点:内存管理的多级架构,内存管理器,大内存页及其使用,6大工作线程,内核池,分页内核和非分页内核池,PFN数据库,虚拟地址空间的管理(VAD),Verifier,实例分析

第六部分:应用程序崩溃和用户态转储(1.5小时)

要点:异常处理,SEH,两轮异常分发,异常处理器,未处理异常,JIT调试和应用程序崩溃的完整过程,转储的基本知识,如何使用ADPLUS自动产生用户态转储,以及分析用户态转储的常用命令和技巧,真实案例分析

第七部分:栈调试 (1.5 小时)

要点:栈的创建,栈的自动增长机制,栈帧的组织方法,栈溢出攻击,GS机制,通过Windows 7系统的真实案例介绍基于Cookie的溢出检测机制,演示使用内核调试会话调试用户空间问题的技巧

案例:分析西部数据公司后台服务程序挂死原因(RPC调试)(30分钟)

51e44c89ab127094a05214b972c42c98.png

第八部分:多线程调试(1小时)

要点:进程与线程,使用WinDBG来调试多线程程序,同时调试多个进程,控制线程执行状态、观察同步对象、临界区,线程死锁,死锁案例分析;CPU的LOCK前缀,互锁递增,同步机制比较,死循环

第九部分:堆调试(1.5小时)

要点:用户态堆,堆的布局,使用CRT堆和Win32堆的调试支持,内存泄漏,溢出,多次释放,页堆,案例分析

第十部分:使用SOS扩展调试 .Net程序(1小时)

要点:使用WinDBG从操作系统层次来调试托管程序,托管模块的加载过程,托管程序的线程结构,及时编译(JIT)的工作过程和托管异常的工作原理,通过SOS扩展库来调试托管程序,加载SOS的方法,SOS的常用命令,如何观察托管堆上的对象,案例分析

第十一部分:I/O子系统和内核态驱动 (1.5 小时)

要点:I/O子系统架构,I/O管理器,驱动程序类型,设备树,ACPI,理解ACPI脚本,PCI总线概要,PnP,I/O子系统的建立过程,设备栈,PDO,FDO,IRP,常用的调试命令;驱动验证器:验证原理,验证项目,启用方法,使用WinDBG分析验证失败,WHCK测试,实例分析

第十二部分:存储和文件系统 (1 .5小时)

要点:存储子系统大局观,磁盘端口驱动,分区管理,卷,磁盘过滤驱动,三级设备栈,文件系统,文件系统的过滤驱动,Mini Filter,实际案例分析:因为文件过滤驱动而导致的系统死锁

第十三部分:系统崩溃和死锁 (1.5 小时)

要点:系统崩溃概览,Windows蓝屏崩溃(BSOD)的过程,系统转储,转储文件的产生过程,转储失败的原因分析系统转储的方法,自动分析,自动分析的局限,真实案例解析:双误导致的崩溃,挂死在DPC回退到错误现场的方法,从栈上寻找线索,系统挂死,典型原因,解决方法,窗口子系统挂死,资源锁,!locks,IRQL,挂死在高IRQL,中断风暴

第十四部分:事件追踪和调优 (1.5小时)

要点:调优基础,采样和 Instrumentation,ETW (Event Tracing for Windows) 机制的原理,WPT组件、工作原理,WPR 和 WPA,演示如何使用Windows Performance Toolkit (WPT) 来发现应用程序的热点和瓶颈,涵盖常用的调优工具,包括perfmon,任务管理器中的重要性能指标(Page Fault,Memory),xperf、xbootmgr、xperfview等,实例讨论:高 CPU 占用率,GPU 调优

f8c0f6bef4151307a63a21ab97a429e3.png

第十五部分: 使用vTune调优(1.5小时)

要点:vTune背景,版本历史,关键组件,收集数据的方法,基本热点(Hotspot)分析,高级热点分析,符号文件和符号文件设置,自定义分析模板,观察线程切换细节(上下文切换和preempt),观察中断,手工设置Marker,案例分析

讲师介绍

65f2a127e31b464f90764f64515d1465.png

张银奎,微软全球最有价值技术专家(MVP),同济大学电子与信息工程学院特邀讲师,前英特尔亚太研发有限公司软件架构师。 《软件调试》、《格蠹汇编》的作者,新版《十万个为什么》电子分册撰稿人之一,《程序员》杂志调试之剑栏目作者 。1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20年,在多家跨国公司历任开发工程师、软件架构师、开发经理、项目经理等职务,对 IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《现代x86汇编语言编程》、《21世纪机器人》、《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。

附录1:往届研习班部分照片

07b16a3e0c2d2bc2a8cc107d807e80ce.png

d188385976446a508f8b9d469f34aae7.png

fc1627157b37cf744fa65f508d629b9b.png

e5547c67ce6902566bdef4072072babc.png

787969dc21703aed69a6334330bf3c97.png

附录2: 中正行营及秀峰景区部分景观

2e9a13489a7c2aa05cd77c653a677b6a.png

abe10f337a4c8f5da60d9d2eeee61e03.png

附录3:报名与收费

希望报名的同行请先提交个人简要介绍(包含主要学习和工作经历)进行申请(通过邮件或者微信发送给研习班助理),通过后方可报名。

标准收费:5800元每人

包括:

§ 庐山秀峰景区门票(对于军人等符合免票条件的学员,此部分费用不退不减)

§ 研习班期间的旅游意外险

§ 包含大量研习材料的U盘

§ 研习班期间的住宿、餐饮和茶点

不包括:

往返庐山的交通费用和以上费用之外的其它费用

优惠条款:

1)同一单位6人同时报名,可免其中一人费用

2)9月30日前报名可以享受8折优惠

报名或垂询

1)联系课程顾问:

a)      Lisa Zhang ,电话:13801874134,电子邮件:lisa.zhang@leshanting.cn

b)      Cindy Long,电话:13621638537,电子邮件:cindy.long@leshanting.cn

2)识别下图二维码,关注格友公众号提交报名信息

公司付款

收款单位:上海曜印网络科技有限公司

银行账号:1001122409003035262

开户行:中国工商银行上海分行静安新城支行

***********************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生。

欢迎关注格友公众号

87d93a207c6fc79d56b1d4cafc8bcaab.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值