课程简介
调试是软件开发过程中一个重要环节,在 Linux 内核开发的过程中也不可避免地会面对如何调试内核的问题。但,Linux 系统的开发者出于保证内核代码正确性的考虑,不愿意在 Linux 内核源代码树中加入一个调试器。 一些监视内核代码和错误跟踪的技术,补丁程序应运而生,让系统功能完善和强大。调试内核问题时,利用工具与方法跟踪内核执行情况。本次分享将从内核、开发环境、开发工具、调试手段等多维度来让LINUX系统性能更加健硕。
课程收益
1. 深入理解 Linux 操作系统的内核、基础设施和核心机制;
2. 提升 Linux 平台的软件开发技能,包括开发内核模块和应用程序
3. 学习 Linux 平台上的调试工具和调试典型问题的方法
4. 学习开发驱动程序必须的硬件基础,熟悉常用的总线和设备。
受众人群
开发工程师、技术开发者
课程时长
2天(12H)
培训形式
讲解+真实案例演示+动手实验
分享提纲
课程主题 | 课程内容 |
第一部分:LINUX内核精要 (1.5小时) | 1.Linux内核演进过程; 2.解析内核源代码树; 3.内核文档; 4.内核中的汇编代码; 5.重要的内核模块; 6.Linux各个发行版本及其特点的简要介绍; 7.Linux的特点及相对于Windows的优势与劣势; 8.学习Linux内核的方法 |
第二部分:LINUX进程管理 (1小时) | 1.进程和地址空间; 2.虚拟内存原理; 3.Page Fault; 4.系统调用(vdso); 5.内核态的关键组件; 6.用户态的关键组件(libc); 7.关键的系统进程 |
第三部分:内核开发环境和工具(1.5小时) | 1.Linux下的常用开发工具(gnu c/c++, make); 2.编辑及代码工具(vim,emacs,Eclipse); 3.调试工具(gdb, kgdb); 4.高效率开发环境(putty + Source Insight); 5.makefile深度解析 |
第四部分:内核模块(1小时) | 1.内核模块的结构; 2.module_init(); 3.module_exit(); 4.模块参数; 5.模块的描述信息(License,版本); 6.编写Makefile; 7.构建模块; 8.加载模块; 9.卸载; 10.检查模块所依赖的内核函数; 11.参见问题调试 试验一:修改和构建内核模块 (0.5小时) 自己动手用C语言编写一个内核模块,加载和测试 |
第五部分:LINUX文件系统(1小时) | 1.“一切皆文件”; 2.文件系统架构,组成; 3.文件操作; 4.设备文件系统; 5.调试文件系统; 6.Linux文件系统下重要目录及文件(etc,proc,sys,dev,lib,include) |
第六部分:LINUX设备模型(1小时) | 1.字符设备,文件操作,read和write,ioctl,与应用程序通信; 2.设备文件系统; 3.poll和select; 4.阻塞型I/O; 5.块设备; 6.blk.h; 7.可移动设备; 8.可分区设备 |
第七部分:GDB和KDB/KGDB(1.5小时) | 1.GDB简介,GDB版本,GDB的架构和工作原理 2.ptrace,命令类型,命令语法,常用命令,调试符号,DWARF,符号文件,ELF结构,readelf,寻找符号的方法,栈回溯(bt),软件断点、硬件断点,复杂的断点命令,控制线程; 3.KDB; 4.加载内核符号,/proc/kcore |
第八部分:信号和异常处理(1小时) | 1.UNIX中的信号; 2.信号处理; 3.信号一览,信号处理器,信号的分发和处理; 4.案例解析:segmentation fault |
第九部分:LINUX调优基础与vTune工具(1.5小时) | 1.困难性,性能目标示例,衡量性能的技术指标,测试性能的两种基本方法,Sampling,Instrumentation,典型的分析方法; 2.vTune:背景,版本历史,工作原理,主要功能,Hotspot分析,符号文件和符号文件设置,与Eclipse的集成,演示,指标解释 |
第十部分:调试内核PANIC(1 .5小时) | 1.系统崩溃概览,系统PANIC的过程,包括产生call stack和寻找函数符号的方法,导致PANIC的常见原因,Panic输出信息逐项解析,真实案例演示; 2.Core Dump简介,工作原理,产生过程,失败的原因,使用GDB分析Core dump,真实案例演示 |
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员
Jack Zhang
百林哲咨询(北京)有限公司专家团队成员