课程内容
课程介绍
本培训专门针对已经有较多.Net应用程序开发经验的工程师而设计,深入探讨.Net应用程序的复杂问题,包括托管堆、多线程、异常处理、异步通信和性能优化等。
培训中结合大量的实例介绍使用WinDBG、Visual Studio、WPT等调试调优工具解决各种复杂问题的方法和技巧。
课程特色
整个培训理论讲解和实验演示紧密结合。
课程大纲
主题 | 内容 |
第一部分:Windows系统核心机制 (1.5小时) | 要点: NT架构,进程空间,特殊的FS/GS段,缺页异常,在任务管理器中观察重要系统信息:CPU总时间、提交内存、工作集等,系统调用,NT的关键进程(CSRSS、LSASS、WinLogon),NT的重要数据结构:EPROCESS、PEB、TEB,Windows子系统,在WinDBG中观察核心数据结构。
|
第二部分:在调试器中理解托管世界 (1.5小时) | 要点: MSCOREE,加载运行时,GC线程,调试辅助线程,Domain,CLR.dll/MSCORWKS.dll,MSJIT,类加载,及时编译,执行Main方法,SOS简介,加载方法,主要命令,类的方法表,方法描述,托管堆,深入理解Property和Field,使用SoS命令观察和分析托管堆,调用本地代码(显式和隐式PInvoke,动态PInvoke),在调试器中理解marshaling,PInvoke的常见问题,实例演示。
|
第三部分:WinDBG精要(1.5小时) | 要点: WinDBG的命令类型,基本使用方法,表达式,重要的调试命令(访问内存、寄存器、断点设置和管理、硬件断点,条件断点),调试符号,定制调试事件的方法,远程调试,高级使用技巧。
|
第四部分:异常处理 (1.5小时) | 要点: 异常概要,异常的来源,异常的分发过程,SEH和VEH,异常处理,两轮异常分发,未处理异常,WER,转储文件,托管异常的发起和分发,Throw,sos的有关命令,Windows SDK安装程序挂死案例解析。
|
第五部分:堆和堆的调试支持(1.5小时) | 要点: 多层存储架构,内存管理器,内核态池,用户态堆,堆布局,内存有关的典型问题,使用CRT堆和Win32堆的调试支持分析内存泄漏,UMDH,通过页堆发现堆块溢出,堆的多实例,案例分析。
|
第六部分:深入理解栈 (1.5 小时) | 要点: 栈基础,自动增长机制,栈帧的组织方法,栈溢出,/GS,观察栈上的信息,k命令,切换栈帧,托管程序的栈,案例演示。
|
第七部分:多线程(1.5小时) | 要点: 并发与并行,多核与超线程, Windows线程,TEB,线程池,同步,关键区,死锁,!locks, !cs -l,Interlocked操作原理,案例分析。
|
第八部分:Visual Studio的高级功能 (1.5小时) | 要点: Immediate窗口,数据断点、监视点、命令窗口,设置符号,跟踪WPF运行时的源代码,开启WPF的追踪机制,VS的调优功能。
|
第九部分:优化基础(1.5小时) | 要点: 性能目标,基本优化方法,采样,instrumentation,空间优化,时间优化,测量方法,测量指标(metrics),测量的噪声,常用的时间测量方法,最佳实践,衡量性能提升的方法,案例解说。
|
第十部分:ETW和WPT (1.5小时) | 要点: ETW原理,WPT工具集概要,关键模块,使用WPR收集事件,典型用法:资源分析和场景模板,启动WPA,WPA的多种视图,在WPA中加载符号,使用WPT分析典型的优化问题。
|
第十一部分:VTune基础(1.5小时) | 要点: 背景,版本历史,工作原理(CPU的性能监视机制),主要功能,三类目标:启动应用、附加到应用和全系统勘察,选择分析类型:算法分析(Hotspot分析、并发分析)、平台分析、微架构分析,指标解释,符号文件和符号文件设置,实际案例演示。
|
第十二部分:图形优化(1.5小时) | 要点: Windows图形子系统概要,WDDM、DirectX,HLSL,DX运行时,DX API,DX在WPF和Metro应用中的使用,图形调优工具:Intel GPA Analyzer、WPF Performance Suite和GPUView,使用Perforator分析WPF应用的渲染过程、帧率和显存使用,使用Visual Profiler观察分解后的WPF UI元素开销,案例分析。
|