张银奎 业内资深工程师、内核调试专家 >
《软件调试》一书的作者,《程序员》杂志调试之剑栏目作者,高端调试网站(ADVDBG.ORG)的创始人;
毕业于上海交通大学信息与控制工程系,长期从 事软件开发和研究工作,对 IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。从 2005 年开始公开讲授“Windows 内核及高级调试”课程,曾在微软的 Webcast 和各种技术会议上做过《Windows Vista 内核演进》、《调试之剑》(2008 年中国软件技术大会)、《感受和思考调试器的威力》 (CSDN SD2.0大会)、 《Windows启动过程》、 《如何诊断和调试蓝屏错误》、 《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软 “深入研究 Windows 内部原理系列”的一部分)等。翻译(合译)作品有《观止——微软创建 NT 和未来的夺命狂奔》、《数据挖掘原理》、《机 器学习》、 《人工智能:复杂问题求解的结构和策略》等。
课程内容
本着理论与实践密切结合的原则,本培训旨在实现三大目标:
- 通过深入浅出的介绍通讯设备(交换机、路由器)操作系统历史,现状以及对该领域未来展望,使学员对通讯设备软件生态环境有初步的认识;
- 通过对Linux操作系统历史及各发行版本的介绍,Li 使学员对Linux有更深入的了解;系统介绍 Linux 环境下开发所需理论,技术,开发工具及调试方法,并借助真实案例,现场操
- 借助调试工具和真实案例,深化对栈、堆、线程同步、异常处理等基本软件设施的认识,提高学员对 Linux 开发的深入理解和快速排错的能力。本培训由 《软件调试》和《格蠹汇编》两本书的作者与 LINUX 系统专家王科平工程师一起授课。
课程形式
讲解 + 真实案例演示 + 动手实验
课程大纲
第一部分:通信设备(交换机、路由器)上主流操作系统 (1 小时)
|
通讯设备主流操作系统介绍:历史,现状及未来展望; 老牌系统 VxWorks 与当红系统 Linux 的全方位对比. 重点介绍基于 Linux 系统的多个实时操作系统,如 OpenWRT, dd-wrt
|
第二部分:LINUX 简要介绍 (0.5 小时)
|
Linux 的诞生及演进;Linux 各个发行版本及其特点的简要介绍;Linux 的特点及相对于 Windows 的优势与劣势
|
第三部分:Linux 文件系统 (1 小时)
|
Linux 文件系统下重要目录及文件(etc,proc,sys,dev,lib,include);
|
第四部分:LINUX 核心特征 (1.5 小时)
|
内核版本(演进过程),进程和地址空间,虚拟内存原理,Page Fault,系统调用(vdso), 内核态的关键组件,用户态的关键组件(libc),关键的系统进程,学习 LINUX 的方法,源 代码树结构
|
第五部分:工具介绍与准备(1.5 小时)
|
Linux 下的常用开发工具(gnu c/c++, make);编辑及代码工具(vim,emacs,Eclipse); 调试工具(gdb, kgdb); 高效率开发环境(putty + Source Insight)
|
第六部分:Linux C 语言开发精要(1 小时)
|
Libc; 神奇的指针;进程与线程; 信号处理; 文件 io; socket 编程; makefile 深度解析; 试验 1:构建一个网络通信程序 (0.5 小时) 自己动手用 c 语言编写一个通信程序,学会掌握用 vim 和 gedit 写代码 尝试通过 gcc 命令行生成 a.out,生成指定的可执行程序 尝试写一个 makefile 来通过 make 来 build |
第七部分:GDB 精要(1.5 小时)
|
GDB 简介,GDB 版本,GDB 的架构和工作原理,ptrace,命令类型,命令语法,常用命令, 调试符号,DWARF,符号文件,ELF 结构,readelf,寻找符号的方法,栈回溯(bt),软件 断点、硬件断点,复杂的断点命令,控制线程
|
第八部分:调试应用程序崩溃(1.5 小时)
|
用户态模块,/proc 文件,libc,信号,段错误(Segmentation fault),三种调试方法: dmesg + map 文件,插入代码 JIT 调试,GDB 交互式调试,真实案例演示和现场解析(观察 栈,函数原型,空指针)
|
第九部分:LINUX SHELL 编程与常用工具 (1 小时)
|
Shell 编程基础:常量与变量,流程控制;输入输出,管道与重定向;常用工具:diff;sed & awk; grep; |
第十部分:LINUX 调优基础与 vTune 工具(1 小时)
|
困难性,性能目标示例,衡量性能的技术指标,测试性能的两种基本方法,Sampling, Instrumentation,典型的分析方法; vTune:背景,版本历史,工作原理,主要功能,Hotspot 分析,符号文件和符号文件设置, 与 Eclipse 的集成,演示,指标解释
|
第十一部分:调试内核 PANIC(1 .5 小时)
|
系统崩溃概览,系统 PANIC 的过程,包括产生 call stack 和寻找函数符号的方法,导致 PANIC 的常见原因,Panic 输出信息逐项解析,真实案例演示;Core Dump 简介,工作原理,产生 过程,失败的原因,使用 GDB 分析 Core dump,真实案例演示
|