博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows平台高级调试与优化
阅读量:3593 次
发布时间:2019-05-20

本文共 3607 字,大约阅读时间需要 12 分钟。

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

 

时间20171020 - 1022日(周五-周日)(每天7小时)

地点:上海

形式:讲解、演示和动手实验

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

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

 

研习提纲:

【DAY 1】

第一部分:WindowsNT核心特征 1.5小时)

要点:特殊的FS段,TEBPCR,地址空间,32位、44位和48位线性地址空间,系统调用,WoW,系统组件,HAL、内核、执行体,重要的驱动程序(KSDXGKRNL),系统进程(IDLESMSS.EXEWinLogon.EXE),子系统、Win32KLinux子系统,会话和会话隔离

 

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

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

 

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

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

 

第四部分:调试启动过程 (1.5小时)

要点:现场跟踪Windows系统的启动过程,解析其中的重要步骤和关键细节:内核初始化,CPU初始化,执行体的阶段0和阶段1初始化,SMSSCSRSSWinLogonUserInit以及Shell

 

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

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

 

【DAY 2】

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

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

 

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

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

 

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

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

 

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

要点:多层存储架构,内存管理器,内核态池,用户态堆,介绍调试内存有关的典型问题的方法和技巧,包括使用CRT堆和Win32堆的调试支持,分析内存泄漏、访问违例等,在探讨实践经验的同时会穿插重要的理论知识,包括Win32对和CRT堆的结构、内存管理常识、堆布局等,真实案例分析

 

 

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

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

 

【DAY 3】

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

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

 

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

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

 

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

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

 

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

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

 

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

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


 

 

讲师介绍

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

 


 

 

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

 

附录2:报名与收费

标准收费:5600元每人

包括:

§  包含研习材料的U盘一个

§  研习班讲义的电子版本和纸质版本

§  研习班期间的午餐和茶点

优惠条款:

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

2)930日前报名可以享受8折优惠

 

报名或垂询

1)联系课程顾问:

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

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

2)请扫描文末的二维码,关注“格友”公众号后,发送2017后便可以提交报名信息或者提问。

 

公司付款

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

银行账号:1001122409003035262

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

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

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

欢迎关注格友公众号

转载地址:http://kepwn.baihongyu.com/

你可能感兴趣的文章
为什么timestamp到2038年就截止了?
查看>>
设计模式之适配器模式
查看>>
设计模式之工厂模式
查看>>
设计模式之原型模式
查看>>
设计模式之对象池模式
查看>>
设计模式之责任链模式 Java实例代码 + Tomcat责任链模式应用+安卓责任链模式应用
查看>>
设计模式之命令模式 Java实例讲解 + 线程池中的应用场景
查看>>
设计模式之 解释器模式 Java实例代码演示
查看>>
设计模式之迭代器模式
查看>>
设计模式之空对象模式详解 附Java源码实例
查看>>
设计模式之访问者模式
查看>>
设计模式之享元模式
查看>>
Java代码设计模式讲解二十三种设计模式
查看>>
IDEA的使用教程二:idea的内置快捷键和idea的代码模板设置
查看>>
idea使用教程三:(创建web项目)
查看>>
Window localStorage 属性(永久储存网站的数据)
查看>>
jQuery中的 $(window) load()与$(document) ready()以及jquery $(document) ready() 与window onload 的区别
查看>>
Java创建URL后台访问接口,返回数据(Http请求-HttpClient方法)
查看>>
项目部署调用接口传参编码问题
查看>>
idea每次打开都是选择项目页面
查看>>