关于Linux的资料浩如烟海,学习Linux的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?《软件调试高级研习班2018庐山秀峰站》将与各位Linux爱好者共同探索这个问题的最佳答案。
本着生动有趣、理论与实践密切结合的原则,本研习班独辟蹊径,使用调试之剑披荆斩棘,带你闯荡纷繁复杂的Linux世界。以格物精神,钻研代码,深挖Linux系统的核心机制,这一讲求得一理,下一讲再求得一理,步步推进。
整个研习班,旨在实现三大目标:
(一)深入理解Linux操作系统的基础设施和核心机制;
(二)学习开发Linux程序(内核模块和应用程序)的工具和方法;
(三)学习Linux平台上的调试工具和调试典型问题的方法。
本研习班由《软件调试》和《格蠹汇编》的作者张银奎携手Intel系Linux高手程煜明博士共同担任教练。
时间:2018年4月20日-4月22日(周五-周日,三天两晚封闭训练,挑灯论剑)
地点:庐山秀峰景区内松雪楼(住)和中正行营(研习)
形式:实战演练、讲解和讨论点评
培训对象:在Linux平台从事开发或测试的软件工程师、项目带头人和技术经理
主办单位:高端调试网站、上海曜印网络科技有限公司
时间长度:3天
形式:讲解 + 真实案例演示
1 从Linus说起--Linux概览 (1小时)
要点:Linux内核的早期版本,推动Linux发展的两股力量,GPL,Tainted,反面典型Nvidia,解析内核源代码树,内核文档,内核中的汇编代码,重要的内核模块,Linux的主要发行版本,Linux的主要开发者,学习Linux内核的方法。
2 全面认识GDB之用户态调试(1.5小时)
要点:为自由而生,Richard Stallman传奇,GDB诞生记,GDB版本,GDB的架构和工作原理,ptrace,命令类型,命令语法,常用命令,调试符号,DWARF,符号文件,下载Ubuntu的符号包和源代码,ELF结构,readelf,寻找符号的方法,栈回溯(bt),软件断点、硬件断点,复杂的断点命令,控制线程。
实战1:使用GDB调试后台服务因段错误崩溃(90分钟)
Linux下重要后台服务(Daemon)随机崩溃,深挖到底,竟然与C语言的规范有关,让你深刻认识C与C++的一个大不同之处,感受著名的头文件陷阱;熟悉如下工具和主要技能:GDB,GCC,map,dmesg,调试Linux应用程序,反汇编,插入代码JIT调试;温习如下知识点:虚拟内存,分页机制,页表,缺页异常,段错误,空指针,AT&T汇编和Intel汇编,调用规约。
3 全面认识GDB之内核态调试(1.5小时)
要点:Linus对内核调试的态度,艰难推进,KDB与KGDB,核心引擎,代码分析,KDB实际演练,KDB的重要命令,准备KGDB调试环境(内核调试环境建立和实际演示),调试符号,使用Ubuntu的符号包,初始断点,kgdbwait,KGDB中调用KDB命令,触发break-in的多种方法,/proc/kcore.
4 文件系统(1.5小时)
要点:“一切皆文件”,文件系统架构,组成,文件操作,设备文件系统,使用内核调试器帮助理解文件系统,EXT FS,Reiser FS,四个核心对象,准文件系统,proc fs(原理,关键代码,重要的应用,meminfo,maps等),sysfs,debug fs。
实战2:使用Linux双机内核调试探究句柄混论之谜
应用程序与驱动程序通信时,驱动程序总是收到错误的数据,打印出来观察,竟然是日志信息送给了驱动…使用KGDB分析应用层程序与驱动程序间通信的过程,分析数据混乱原因,理解虚拟文件系统、Linux驱动程序、sysfs、标准文件等理论化。
5 进程管理 (1.5小时)
要点:进程和线程,LWP,任务结构体,一体二用,进程属性,线程结构体,内核态栈,寻找内核态栈的方法,调度队列,线程优先级,线程调度器,计算每个任务时间片的方法,选择当前运行任务的算法,strace,ps命令的高级用法,pstree,top,使用strace做简单调优。
6 内存管理(上)(1.5小时)
要点:物理内存,从core到DRAM,NUMA,page,pfn,页表管理,TLB,MMU,页错误,观察页错误,虚拟内存,进程的地址空间,vma,maps,vmstat,活跃内存和非活跃内存,内核态池,从/proc/meminfo 谈内存的使,meminfo 信息深入分析。
实战3:与内存管理器对话
通过用户态和内核驱动样例程序以不同方式做分配操作,演示meminfo输出信息的改变,理解内存去哪儿了以及触发OOM killer的过程。
7 内存管理(下)(1.5小时)
要点:用户态堆,ptmalloc,arena,heap,主arena的布局,辅anrena的创建,堆块结构,分配策略,bin,bin的组织,分配过程,释放过程,堆有关的错误,故障调试,valgrind,valgind的工作原理。
实战4:使用valgrind调试典型的堆错误
堆很脆弱,经不起的考验有很多:溢出、多次释放、野指针……,在Linux解决这些问题的最有力武器就是valgrind,以老雷亲自编写的GeMalloc程序为样本,模拟各类堆错误,并使用valgrind一一捕获。
8 内核模块和系统Panic(1.5小时)
要点:可加载内核模块(LKM),init和exit,三类设备,字符设备,块设备,网络设备,softirq和tasklets,pnp,udevinfo,系统调用,与应用通信,ioctl, 文件读写,典型设备驱动解析eMMC,SD,USB(控制器,HUB,设备,数据传输),OOPS和Panic,详细解读Oops信息。
实战5:分析系统Panic的原因
随机的内核Panic是实际工程中常常遇到的问题,在这个动手实战中,大家将一起分析多个有代表性的panic案例,解析其来龙去脉,探讨分析内核panic的方法。
9 日志和消息输出(1小时)
要点:系统日志架构,printk,vprintk_emit,消息级别,消息头结构,结构化信息输出,facility,logger,syslog,console,syslogd,/dev/kmsg,隐含锁,动态控制消息输出,结构化的消息,结构化消息在PnP中的应用。
10 调优基础(1小时)
要点:性能目标示例,衡量性能的技术指标,测试性能的两种基本方法,Sampling,Instrumentation,典型的分析方法。
11 事件追踪(ftrace和perf)(1.5小时)
要点:trace机制背景,ftrace简史,ftrace的工作原理,追踪点,文件系统接口,user marker,启用追踪,读取trace数据,Kernshark,使用示例,perf,选择CPU的计数器,perf使用示例。
12 使用vTune调优(1.5小时)
要点:vTune背景,版本历史,工作原理,主要功能,Hotspot分析,符号文件和符号文件设置,与Eclipse的集成,指定分析目标,选择分析类型,自定义分析类型,选择CPU的硬件计数器,视图,函数和调用栈,汇编视图,源代码视图,观察Preemption事件。
实战6:使用vTune分析AI应用的执行热点
通过vTune的监视工具采集AI应用的运行数据,然后使用vTune图形分析工具进行分析,学习不同分析视图的用法,理解vTune中的关键性能指标。
1
讲师介绍
2
讲师介绍
1附录1:往届研习班部分照片
2附录2:中正行营及秀峰景区部分景观
3附录3:报名与收费
标准收费:5600元每人
包括:
§ 庐山秀峰景区门票(对于军人等符合免票条件的学员,此部分费用不退不减)
§ 研习班期间的旅游意外险
§ 包含研习材料的U盘一个
§ 研习班期间的住宿、餐饮和茶点
不包括:
§ 往返庐山的交通费用和以上费用之外的其它费用
优惠条款:
1)同一单位6人同时报名,可免其中一人费用
2)距离研习班开课前15日报名,可以享受8折优惠
3)在校生或个人自费参加请联系课程顾问询问优惠价格(视报名时间而不同)
报名或垂询
1)扫描二维码,关注“格友”公众号后,直接发送报名信息或者提问。
2)联系课程顾问:
Lisa Zhang ,微信:13801874134,Email:lisa.zhang@leshanting.cn
Cindy Long,电话:13621638537,Email:809825433@qq.com
公司付款
收款单位:上海曜印网络科技有限公司
银行账号:1001122409003035262
开户行:中国工商银行上海分行静安新城支行
关于作者:
张银奎(Raymond Zhang),绰号“格蠹老雷”,1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20余年,一多半时间任职于INTEL公司的上海研发中心,先后在PASD、DEG、CPG、PCCG、VPG等部门工作。业余时间喜欢写作和参与各类技术会议,发文数百万字,探讨各类软件问题,其中《在调试器里看阿里的软件兵团》等文章广为流传。
关于“Linux宝库”微信公众号:
欢迎关注"Linux宝库"微信公众号,这里每天发布最新的开源人物和开源事件。谨以此号记录Linux和开源业界的点点滴滴,为开源爱好者和从业者点亮人生。
- 责任编辑:鞠东颖-- END -
Linux宝库
长按扫码,关注我们
为开源爱好者和从业者点亮人生