LINUX平台高级调试和优化

5fd7de86292769dcfe54d5903d9c25a5.png

ac9a2655315b568519881d7126eb3268.png

d51bca612567690dac5f52576156a5ce.png

ef92acee64b1681d94f7a010e678a02c.png

c85fbcd0e0dafcc785fd85c51ba07585.png

庐山

d9aabe09bcdba8fbf756631b0750a712.png

b3c342cf553cd44ec15bbbb2bd20edd3.png

601f7f0d42192268bbc61895b95d3e02.png

90978dd1cedc261440ccbb240cfe35e1.png

软件调试高级研习班2023庐山桃花源站

LINUX平台

高级调试和优化

关于LINUX的资料浩如烟海,学习LINUX的途径也有很多,如何才能在比较短的时间里获得一个比较大的提升呢?

《软件调试高级研习班2023庐山桃花源站》将与各位LINUX爱好者共同探索这个问题的最佳答案。本着生动有趣、理论与实践密切结合的原则,本研习班独辟蹊径,选择具有深厚人文底蕴的庐山景区以封闭式训练的方式打造独有的沉浸式学习体验;使用调试之剑披荆斩棘,带你畅游纷繁复杂的LINUX世界;以格物精神,钻研代码,深挖LINUX系统的核心机制,这一讲求得一理,下一讲再求得一理,步步推进。

本研习班由《软件调试》和《格蠹汇编》的作者张银奎主讲。

整个研习班,旨在实现三大目标:

01/

深入理解LINUX操作系统

的基础设施和核心机制 

02/

学习开发LINUX程序(内核模块

和应用程序)的工具和方法

03/

学习LINUX平台上的调试工具

和调试典型问题的方法 

2023年3月17日~19日 (周五~周日)

三天两晚封闭训练,挑灯论剑

庐山桃花源景区内

讲解、实战演练和问答讨论

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

格蠹信息科技(上海)有限公司、高端调试网站

第一部分   1小时

LINUX大局观

要点:GNU、发行版、三位一体、推动Linux发展的两股力量、内核源代码树、两大空间的关键部件、系统调用、strace、vdso、GNU、glibc、内核参数、观察当前内核使用的编译选项、内核文档。

44544d0eeb5bd95183927e0748a077a7.png

第二部分   1小时

GDB精要

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

第三部分   1小时

应用程序崩溃和转储

要点:信号概要、信号屏蔽、设置信号处理器、理解古老的异常处理方式、setjmp、longjmp、段错误、段错误实例介绍、core文件、ulimit、core_pattern、ubuntu的错误收集机制、aport、分析core文件、本地分析、跨机器分析、分析core文件的最佳实践。

实战1   0.5小时

使用GDB调试

后台服务因段错误崩溃

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

第四部分   1.5小时

使用挥码枪和NanoCode

调试LINUX内核

要点:内核调试的挑战、CoreSight技术基础、挥码枪的基本用法、加载符号、观察内核模块、设置断点、调用栈、观察进程和线程、常用的内核调试命令。

实战2 

使用硬件调试器

驾驭LINUX内核

使用挥码枪硬件调试器调试GDK8系统、将狂野的LINUX内核中段下来、仔细把玩。

555d3584c5a314f00676cf06cc762f12.png

第五部分   1.5小时

文件系统

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

实战3

使用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 信息深入分析。

实战4

与内存管理器对话

编写和修改内核驱动(LKM)、加载驱动、使用多种方式分配内存、并通过不同方式观察内存开销变化、理解内存分配的原理、关键术语、学习各种观察工具的用法。

f9d2e120be7f14c7d443f3a82186e09c.png

第八部分   1.5小时

内存管理(下)

要点:用户态堆、ptmalloc、arena、heap、主arena的布局、辅anrena的创建、堆块结构、分配策略、bin、bin的组织、分配过程、释放过程、堆有关的错误、故障调试、valgrind、valgind的工作原理、Address Sanitizer(ASan)、ASan的工作原理、影子记录、检查过程、额外开销。

实战5

使用valgrind

调试典型的堆错误

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

第九部分   1.5小时

内核模块和驱动开发

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

第十部分   1小时

系统崩溃

要点:OOPS和Panic、Panic的信息格式、Die、ARCH下的实现代码、最常见的Panic、详细解读Oops信息。

实战6

分析系统Panic的原因

通过LKM触发内核Oops和Panic(内核态栈溢出、段错误和NMI watch dog超时)、理解Oops输出、分析内核Panic工程、解析其来龙去脉。

b476433f749872eca0ebc3d5cfd673f2.png

第十一部分   1小时

内核消息

要点:内核调试设施、printk、vprintk_emit、消息级别、消息头结构、结构化信息输出、facility、logger、syslog、console、syslogd、/dev/kmsg、隐含锁、动态控制消息输出、结构化的消息、结构化消息在PnP中的应用。

第十二部分   1.5小时

调优和事件追踪

(ftrace和perf)

要点:测试性能的两种基本方法、Sampling、Instrumentation、trace机制背景、ftrace简史、ftrace的工作原理、追踪点、文件系统接口、user marker、启用追踪、读取trace数据、Kernshark、观察线程被抢时间片、观察中断处理过程、perf、perf的典型用法、选择CPU的计数器、perf使用示例(统计pagefault来源)。

讲师介绍

b94668c28adde7ed9d52f7890873b23f.png

张银奎(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和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。

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

01

d64ac29a3fea55dd9f78ecc44e0cc8df.png

02

0a742654c02b0d549d6cc3381d2a142b.png

03

378c038eff174c3c616a7dcf4de9f88f.png

04

d83103f5668abe954a7183db91ce25f3.png

附录2:庐山桃花源景区部分景观

01

527fea1f78153d4c9acffe45bec5941a.png

02

05d6947361a8b9b04f443635ce449191.png

附录3:报名与收费

标准收费:6200元 / 每人

包括

  • 基于ARM CoreSight技术的挥码枪硬件调试器一套

  • 包含ARMv8 SoC和Ubuntu系统的GDK8开发套件一套

  • 带作者签名钤印《软件简史》预览本

  • 研习班期间的住宿、餐饮(早中晚三餐)和茶点

  • 庐山桃花源景区门票(对于军人等符合免票条件的学员,此部分费用不退不减)

  • 研习班期间的旅游意外险

  • 纸质版讲义

e1fbb1ba32a274f12b642a00f60eb652.png

包括

  • 往返庐山的交通费用和以上费用之外的其它费用

优惠条款

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

  2. 距离研习班开课前15日报名可以享受9折优惠。

  3. 在校学生或者个人自费参加请联系课程顾问询问优惠价格(视报名时间而不同)。

报名或垂询

Taylor

邮箱:zhiqiang.chunyu@nanocode.cn

微信:16622192370

QQ:1468084390

Lisa

邮箱:lisa.long@nanocode.cn

微信:13801874134

QQ:545417515

公司付款信息

账户名称:格蠹信息科技(上海)有限公司

开户行:招商银行股份有限公司上海浦江镇支行                      

账号:1219 3085 8010 501

6bf1dc62e5a14c77eccee6735da37440.png

关于盛格塾

盛格塾是格蠹科技旗下的知识分享平台,是以“格物致知”为教育理念的现代私塾。本着为先圣继绝学的思想,盛格塾努力将传统文化中的精华与现代科技密切结合,以传统文化和人文情怀阐释现代科技,用现代科技传播传统文化。

访问方式

手机端:微信小程序搜索“盛格塾”

电脑端:下载Nano Code社区版客户端

https://nanocode.cn/#/download

5010636719090ee5f356aa00fd29fa0b.png

格友公众号

43a92db214e69aadfb92d14c676f331a.png

盛格塾小程序

往期精彩推荐

有趣才有味

有一种爱叫桃花源

实战FreeRTOS的UsageFault异常

基于DRM框架的HDMI热插拔流程分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值