本课程纵览软件调试的整个“生态系统”,从CPU、操作系统、编译器和调试器四个纵向层次上对Windows和Linux平台上的调试设施和方法展开横向比较,从调试角度审视Windows,Linux,GCC,Visual Studio,GDB和WinDBG等著名平台和工具,既有深度,又有广度。整个课程理论讲解和实验演示紧密结合
第一部分:CPU的调试支持 序言 概览和软件断点 硬件断点、陷阱和 第二部分:操作系统的调试支持 概览和内核调试 内核调试演示 用户态调试原理 应用程序调试原理—— 操作系统的异常分发过程 结构化异常处理(SEH)演示 未处理异常:默认过滤器和JIT调试 第三部分:编译器的调试支持 调试符号 第四部分:调试器 用户态调试器原理和调试事件 精要[上]:设置路径 精要[中]:表达式和硬件断点 精要[下]:远程调试 第五部分:应用程序崩溃和用户态转储 信息输出、ETW和 转储、轨迹追踪、WER和 第六部分:栈调试 栈的自动增长、栈帧 栈上的缓冲区溢出、溢出攻击 基于Cookie的安全检查(GS机制 内核态栈 第七部分:堆调试 堆概要 堆的调试支持 页堆 堆的调试支持 和应用验证器 第八部分:多线程调试 线程与进程 临界区与调试支持 死锁和死循环 案例和互锁机制 第九部分:内核调试 内核调试概要 使用KD理解内核 双机用户态调试 第十部分:高级调试技巧 调试事件、调试会话中的服务和总结