关于LINUX的资料浩如烟海,学习LINUX的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?《软件调试高级研习班》将与各位LINUX爱好者共同探索这个问题的最佳答案。本着生动有趣、理论与实践密切结合的原则,本研习班独辟蹊径,使用调试之剑披荆斩棘,带你闯荡纷繁复杂的LINUX世界。以格物精神,钻研代码,深挖LINUX系统的核心机制,这一讲求得一理,下一讲再求得一理,步步推进。整个研习班,旨在实现三大目标:(一)深入理解LINUX操作系统的基础设施和核心机制;(二)学习开发LINUX程序(内核模块和应用程序)的工具和方法;(三)学习LINUX平台上的调试工具和调试典型问题的方法。本研习班由《软件调试》和《格蠹汇编》的作者张银奎携手INTEL系LINUX高手程煜明博士共同担任教练。今年4月,本研习班曾在庐山秀峰成功举办,这一次移师上海,在上一届的基础上增加了实战内容,并适当增加深度。

 

时间:2018年9月6日- 9月8日(周四-周六)

地点:上海

形式:实战演练、讲解和讨论点评

时间长度:3

培训对象:在Linux平台上从事开发或测试的软件工程师、项目带头人和技术经理

主办单位:高端调试网站、上海曜印网络科技有限公司

 

第一部分:LINUX系统大局观 (1小时)

要点:Linux内核的早期版本,推动Linux发展的两股力量,GPL,Tainted,反面典型Nvidia,解析内核源代码树, Linux架构,ld(Loader),libc,重要的内核模块,Linux的主要发行版本,Linux的主要开发者,内核参数,内核文档和工具链(GCC)

第二部分:全面认识GDB之用户态调试(1.5小时)

要点:为自由而生,RichardStallman传奇,GDB诞生记,GDB版本,GDB的架构和工作原理,ptrace,命令类型,命令语法,常用命令,调试符号,DWARF,符号文件,下载Ubuntu的符号包和源代码,ELF结构,readelf,寻找符号的方法,栈回溯(bt),软件断点、硬件断点,复杂的断点命令,控制线程

第三部分:应用程序崩溃和转储(1小时)

要点:信号,信号处理器,信号屏蔽,使用setjmp和longjmp处理异常,Ubuntu的错误报告机制, 使用Python脚本定制和收集更多信息

实战1:使用GDB调试后台服务因段错误崩溃(90分钟)

Linux下重要后台服务(Daemon)随机崩溃,深挖到底,竟然与C语言的规范有关,让你深刻认识C与C++的一个大不同之处,感受著名的头文件陷阱;熟悉如下工具和主要技能:GDB,GCC,map,dmesg,调试Linux应用程序,反汇编,插入代码JIT调试;温习如下知识点:虚拟内存,分页机制,页表,缺页异常,段错误,空指针,AT&T汇编和Intel汇编,调用规约

第四部分:CORE转储和分析(1小时)

要点:Core机制,配置产生core文件,使用gdb分析core文件,加载符号,手工回溯栈,案例讨论,分析Core转储的最佳实践

第五部分:全面认识GDB之内核态调试(1.5小时)

要点:Linus对内核调试的态度,艰难推进,KDB与KGDB,核心引擎,代码分析,KDB实际演练,KDB的重要命令,准备KGDB调试环境(内核调试环境建立和实际演示),调试符号,使用Ubuntu的符号包,初始断点,kgdbwait,KGDB中调用KDB命令,触发break-in的多种方法,/proc/kcore

第六部分:文件系统(1.5小时)

要点:“一切皆文件”,文件系统架构,组成,文件操作,设备文件系统,使用内核调试器帮助理解文件系统,EXT FS,Reiser FS,四个核心对象,准文件系统,proc fs(原理,关键代码,重要的应用,meminfo,maps等),sysfs,debug fs

实战2:使用LINUX双机内核调试探究句柄混论之谜

应用程序与驱动程序通信时,驱动程序总是收到错误的数据,打印出来观察,竟然是日志信息送给了驱动…使用KGDB分析应用层程序与驱动程序间通信的过程,分析数据混乱原因,理解虚拟文件系统、Linux驱动程序、sysfs、标准文件等理论化

第七部分:进程管理 (1.5小时)

要点:进程和线程,LWP,任务结构体,一体二用,进程属性,线程结构体,内核态栈,寻找内核态栈的方法,调度队列,线程优先级,线程调度器,计算每个任务时间片的方法,选择当前运行任务的算法,strace,ps命令的高级用法,pstree,top,使用strace做简单调优

第八部分:内存管理(上)(1.5小时)

要点:物理内存,从core到DRAM,NUMA,page,pfn,页表管理,TLB,MMU,页错误,观察页错误,虚拟内存,进程的地址空间,vma,maps,vmstat,活跃内存和非活跃内存,内核态池,从/proc/meminfo 谈内存的使,meminfo 信息深入分析

实战3:与内存管理器对话

通过用户态和内核驱动样例程序以不同方式做分配操作,演示meminfo输出信息的改变,理解内存去哪儿啦以及触发OOM killer的过程

第九部分:内存管理(下)(1.5小时)

要点:用户态堆,ptmalloc,arena,heap,主arena的布局,辅anrena的创建,堆块结构,分配策略,bin,bin的组织,分配过程,释放过程,堆有关的错误,故障调试,valgrind,valgind的工作原理

实战4:使用valgrind调试典型的堆错误

堆很脆弱,经不起的考验有很多:溢出、多次释放、野指针……,在Linux解决这些问题的最有力武器就是valgrind,以老雷亲自编写的GeMalloc程序为样本,模拟各类堆错误,并使用valgrind一一捕获

第十部分:内核模块和驱动程序(1.5小时)

要点:可加载内核模块(LKM),init和exit,三类设备,字符设备,块设备,网络设备, softirq和tasklets,pnp,udevinfo,系统调用,与应用通信,ioctl, 文件读写,典型设备驱动解析eMMC,SD,USB(控制器,HUB,设备,数据传输)

第十一部分:系统Panic(1小时)

要点:OOPS和Panic,panic_on_oops,详细解读Oops信息,内核转储,从oops消息定位代码错误,案例分享

实战5:分析系统Panic的原因

随机的内核Panic是实际工程中常常遇到的问题,在这个动手实战中,大家将一起分析多个有代表性的panic案例,解析其来龙去脉,探讨分析内核panic的方法

第十二部分:日志和消息输出(1小时)

要点:系统日志架构,printk,vprintk_emit,消息级别,消息头结构,结构化信息输出,facility,logger,syslog,console,syslogd,/dev/kmsg,隐含锁,动态控制消息输出,结构化的消息,结构化消息在PnP中的应用

第十三部分:调优基础(1小时)

要点:性能目标示例,衡量性能的技术指标,测试性能的两种基本方法,Sampling,Instrumentation,典型的分析方法

第十四部分:事件追踪(ftrace和perf)(1.5小时)

要点:trace机制背景,ftrace简史,ftrace的工作原理,追踪点,文件系统接口,user marker,启用追踪,读取trace数据,Kernshark,使用示例,perf,选择CPU的计数器,perf使用示例

第十五部分:使用vTune调优(1.5小时)

要点:vTune背景,版本历史,工作原理,主要功能,Hotspot分析,符号文件和符号文件设置,与Eclipse的集成,指定分析目标,选择分析类型,自定义分析类型,选择CPU的硬件计数器,视图,函数和调用栈,汇编视图,源代码视图,观察Preemption事件

实战6:使用vTune分析AI应用的执行热点

通过vTune的监视工具采集AI应用的运行数据,然后使用vTune图形分析工具进行分析,学习不同分析视图的用法,理解vTune中的关键性能指标

讲师介绍

张银奎(Raymond Zhang),绰号“格蠹老雷”,1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20余年,一多半时间任职于INTEL公司的上海研发中心,先后在PASD、DEG、CPG、PCCG、VPG等部门工作。业余时间喜欢写作和参与各类技术会议,发文数百万字,探讨各类软件问题,其中《在调试器里看阿里的软件兵团》等文章广为流传。2015年起获微软全球最有价值技术专家(MVP)奖励。著有《软件调试》和《格蠹汇编》,曾经主笔《程序员》杂志调试之剑专栏。在多家跨国公司历任开发工程师、软件架构师、开发经理、项目经理等职务,对IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件战役研究峰会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《现代x86汇编语言编程》、《21世纪机器人》、《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。

程煜明,1998年毕业于上海交通大学惯性导航专业,获得博士学位,毕业后从事很多年嵌入式系统软件开发,早期的五年在上海贝尔专注电信设备上实时操作系统PSOS/vxWorks的底层软件开发,业余时间用调试器分析过pSOS/vxWorks 内核的实现,后来又用了十年时间在RadiSys和英特尔亚太研发中心从事Linux底层软件的开发,曾先后在英特尔的IMG、VPG等部门工作,对bootloader、Fibre channel driver、英特尔显卡驱动(I915 display driver)、40GB Ethernet user mode driver、Linux  build系统以及板级的信号完整性有深入的研究,目前对算法设计与分析比较感兴趣。

附录1:往届研习班部分照片

附录2:报名与收费

标准收费:5600元每人

包括:

§ 包含研习材料的U盘一个

§ 研习班讲义的电子版本和纸质版本

§ 研习班期间的午餐和茶点

优惠条款:

1)同一单位6人同时报名,可免其中一人费用

2)8月31日前报名可以享受8折优惠

报名或垂询

1)联系课程顾问:

a)       Lisa Zhang ,微信:13801874134,电子邮件:lisa.zhang@leshanting.cn

b)       Cindy Long,电话:13621638537,电子邮件:809825433@qq.com

2)扫描文末的二维码,关注“格友”公众号后,直接发送报名信息或者提问。

公司付款

收款单位:上海曜印网络科技有限公司

银行账号:1001122409003035262

开户行:中国工商银行上海分行静安新城支行


LINUX平台高级调试和优化(2018上海站)相关推荐

  1. Linux平台高级调试和优化

    关于Linux的资料浩如烟海,学习Linux的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?<软件调试高级研习班2018庐山秀峰站>将与各位Linux爱好者共同探索这个问题 ...

  2. GPU高级调试与优化

    GPU的历史很短,只有十几年.但它发展迅猛,凭借强大的并行计算能力和高效率的固定硬件单元,在人工智能.虚拟和增强现实(VR/AR).3D游戏.视频编解码等领域大显身手.而且这种趋势还在延续,基于GPU ...

  3. Linux 平台中调试 C/C++ 内存泄漏方法

    由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就会在系统中导入内存错误.同时,内存错误往往非常严重,一般会带来诸如系统崩溃,内存耗尽这样严重的后果.从历史上看,来自计算机应急响 ...

  4. linux ptrace 读内存,Linux高级调试与优化——ptrace

    ptrace (process trace) #include long ptrace(enum __ptrace_request request, pid_t pid, void *addr, vo ...

  5. linux内核优化脚本,linux内核高级优化脚本

    linux内核高级优化脚本 可以用于hadoop生态圈环境的组件安装 linux内核调优 具体的每一步的解释请参考 03搭建cdh 备注:使用与centos6和centos7两个系统版本执行 [[em ...

  6. 保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建

    保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建 写在前面 配置VSCode的编译环境 配置VSCode的gdb调试环境 配置 ...

  7. linux java远程调试_[转]JPDA:Java平台调试架构(常用的远程调试方法)

    原文出处:http://www.javaeye.com/topic/75128 最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPD ...

  8. 花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统

    上个星期社区进行了一场直播,关于"新一代核心银行系统解决方案CBOD"--首个运行在Linux平台的核心银行系统. 国外上线Linux核心系统的银行已经不少,例如花旗银行在主机系统 ...

  9. 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

    一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...

最新文章

  1. Linux运维之批量下载指定网站的100个图片文件,并找出大于200KB的文件
  2. Ansible实现zabbix服务器agent端批量部署
  3. k8s Pod亲和性:pod与pod的亲和性
  4. 用py2exe打包成一个exe文件
  5. logging记录日志
  6. excel怎么删除浏览记录 方法介绍
  7. 华为申请注册华为鸿蒙商标,华为申请注册“华为鸿蒙”商标,自研操作系统或将实现?-控制器/处理器-与非网...
  8. JS实现子类调用父类的同名函数函数
  9. win下mysql数据库双机配置_[数据库]windows下使用mysql双机热备功能
  10. php 进程管理及操作
  11. 《编写可维护的JavaScript》——2.2 多行注释
  12. linux 复 带进度条
  13. Java连接数据库访问失败
  14. cmos和ttl_TTL与CMOS集成电路的区分
  15. 像电影里黑客高手一样写代码
  16. 计算机怎么显示正确,电脑显示器怎么正确设置
  17. 拯救流浪猫 | 「喵先锋」系列数字版权盲盒明日开抢
  18. Windows窗体应用程序~随机数字抽奖系统
  19. Omnipeek空口抓包(2):扫描无线网络
  20. 从程序员到CTO的Java技术路线图(我爱分享)

热门文章

  1. Python如何解决“京东滑块验证码”(5)
  2. 首次高德地图自定义marker并清除marker,都是借鉴各位前辈的代码,然后融合了好多案例,感谢各位前辈
  3. 解决win11 IDEA 升级或重新安装任务栏图标变成白色的问题
  4. 【经典面试题】为啥TCP是三次握手(three-way handshake) 而不是两次/四次呢?
  5. RJ45型配线架的端接后安装
  6. Proxyee_down
  7. 29条看了想哭的QQ签名
  8. 【SLAM学习】证明线性方程Ax=b,系数矩阵超定时的最小二乘解
  9. 0511 backlog
  10. 商业人像精修皮肤质感增加PS插件_安装说明