LINUX嵌入式系统开发与调试

LINUX嵌入式系统开发与调试
    马上咨询

    张银奎  业内资深工程师、内核调试专家  >

    《软件调试》一书的作者,《程序员》杂志调试之剑栏目作者,高端调试网站(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,真实案例演示