拍案惊奇——GDB调试器以战说法

  拍案惊奇——

    GDB调试器以战说法    

Strike the table in surprise

Debug Wars using GDB

965dcabe3a2530c94cdd5d5cdc25d725.png

1b9fc42e8482b225df0a74af01ea6e65.png

随着软件复杂度的不断增加,软件调试的难度越来越大。以调试器为核心的调试技术是征服软件世界的一把利剑。要想成为软件高手,认真修炼调试器这门剑法是值得投入的。

本系列讲座通过8个精选案例让参与者在实战中“事上磨练”,快速进阶。这些案例都源于真实的软件产品和项目,既有深度,又有广度,覆盖Linux平台上的常用软件和典型调试场景。涵盖的技术包括交互式调试、转储文件分析、逆向工程、反调试(加壳)与化解等。

本系列课程由《软件调试》和《格蠹汇编》的作者张银奎(格蠹老雷)亲自讲授,上调试器抓真BUG,以战说法,剖微穷深。

74a850a883c83370c3329c35f0b51d2a.png

  形式   

8次线上课程,

每次60分钟

  时间   

2023年10月21日起,

每周六晚上8:00 - 9:00

    Strike the table in surprise    

   Debug Wars using GDB   

   战役1:谁截断了我的指针?  

要点

64位指针到底长什么样?汇编级别单步跟踪、看返回值、神奇的类型转换指令、符号扩展、地址空间。

工具和主要技能:

GDB、ni、si、disp、disassemble。

知识点

段错误、调用规约。

c9336e16103a71fdea2f7a1f3f50a67b.png

6960877c66a66de06fe208c9ed597082.png

   战役2:何人传来空指针? 

要点

Linux下重要后台服务(Daemon)随机崩溃、深挖到底、竟然与C语言的规范有关、让你深刻认识C与C++的一个大不同之处、感受著名的头文件陷阱。

工具和主要技能

GDB、GCC、map、dmesg、调试Linux应用程序、反汇编、插入代码JIT调试。

知识点

虚拟内存、分页机制、页表、缺页异常、段错误、空指针、AT&T汇编和Intel汇编、调用规约。

b3831123919fc4b8fdf9d28fa8fc67d1.png

   战役3:文件混乱是真的吗?  

要点

应用程序与驱动程序通信时、驱动程序总是收到错误的数据、打印出来观察、竟然是日志信息送给了驱动。

工具和主要技能:

GDB、printk、dmesg。

知识点

虚拟文件系统、Linux驱动程序、文件对象和描述符、与应用程序通信、标准文件。

fca55b545451381ff5bd0f10fe9c3dcd.png

   战役4:线程拥堵之谜   

要点

多线程并行、线程同步、lock和unlock、线程死锁、使用GDB观察多线程、LLL系列函数。

工具和主要技能

GDB、thread apply all。

知识点

线程、同步对象。

4738011f5bb64b3ad1d62ec8b8b7e620.png

   战役5:栈上的缓冲区溢出   

要点

局部变量越界、栈大小、栈帧、栈帧布局、gcc的栈保护机制、栈的优点、在栈上动态分配。

工具和主要技能:

GDB、gcc。

知识点

栈缓冲区溢出、stack protector。

d0c7ef594c8ef0f175ce91d1907c601d.png

22a18388b90b7cded7f13b0f79da11be.png

   战役6:谁踩了我的数据? 

要点

使用GDB等多种工具深度解析Linux下的用户态堆和动态内存分配的典型问题、包括多次释放、溢出等、现场演练使用GDB跟踪ptmalloc堆的技巧以及使用valgrind工具的方法。

工具和主要技能

GDB、valgrind、交互式调试、调试内存有关的问题。

知识点

内存的多层管理、堆的结构、arena、堆块、分配和释放过程、valgrind工作原理。

c14e9bfa1a17ffd76812781af6618a31.png

   战役7:反调试与化解   

要点

调试器工作原理、反调试的背景、反调试的一般方法、检查调试器、隐藏调试器、记时法反跟踪、倒车调用。

工具和主要技能:

GDB、objdump、调试器检测、Anti-Debug和应对。

知识点

ptrace、信号、自定义信号处理、单步标志、硬件断点寄存器、异常处理器、内存HASH检测。

015526585d500cd079d9148b150c8a99.png

aa710a5b9865d3a88f24b0a4b1d58169.png

   战役8:CORE文件产生和分析   

要点

内存转储、CORE之名、产生core文件的方法、使用gdb分析core文件、file命令、常遇到的障碍、跨机器分析、定制库搜索路径。

工具和主要技能

GDB、readelf、generate-core-file。

知识点

ELF格式和CORE格式、libc。

32a75fd76675c2dbb43b891b5c1afbf6.png

  讲师介绍   

2f06e0f72ecdf87c74df715244e60b33.png

张银奎

Raymond Zhang

绰号:“格蠹老雷”

1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20余年,一多半时间任职于INTEL公司的上海研发中心,先后在PASD、DEG、CPG、PCCG、VPG等部门工作。业余时间喜欢写作和参与各类技术会议,发文数百万字,探讨各类软件问题,其中《在调试器里看阿里的软件兵团》等文章广为流传。2015年起获微软全球最有价值技术专家(MVP)奖励。著有《软件调试》和《格蠹汇编》二书,曾经主笔《程序员》杂志调试之剑专栏 。

在多家跨国公司历任开发工程师、软件架构师、开发经理、项目经理等职务,对 IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件战役研究峰会)、《感受和思考调试器的威力》(优快云 SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《现代x86汇编语言编程》、《21世纪机器人》、《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。

  报名或垂询   

标准价格:680元

包括

  •  8次线上讲座

  •  2年内使用NanoCode客户端回看录像

  •  课程期间微信群讨论和答疑

优惠条款

  • 兰舍成员5折优惠

试验环境:幽兰代码本

859bdf9922676b3c24984e185c3eec2b.png

购买方式

  • Nano Code内购买(课程号:260)

    在Nano Code的Nano视频中直接购买,购买后会通过Nano Code的绑定邮箱,发送上课方式到该邮箱内。

    *注:Nano Code中的课程价格默认为标准价格680元,如符合优惠条款,可联系课程顾问退还差价。

  • 微信 / 支付宝 付款

    完成付款后,请发送邮件到lisa.long@nanocode.cn进行登记,上课方式也会发送到该发件邮箱内。

ee893f33c4a75663b26240146389cb8b.png

d567a512fe8eda4462a7055427132f58.png

联系我们

课程顾问:Lisa

咨询电话:13801874134 (微信同号)

报名邮箱:lisa.long@nanocode.cn

  公司付款信息   

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

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

账号:1219 3085 8010 501

【盛格塾】

正心诚意,格物致知

人文情怀审视软件,以软件技术改变人生

81b408aa1dd9b7fd27bf9159ecfdf3e9.png

格友公众号

1d147d7f89e3455bedd35cd8940eb0a2.png

盛格塾小程序

扫描上方二维码或在微信中搜索“盛格塾”小程序

可以阅读更多文章和有声读物

往期推荐

穿越两大空间的调用栈

幽兰代码本——开源软件实践家

戒慎乎不睹,大模型体验记

LINUX平台高级调试和优化(庐山太乙站)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值