拍案惊奇——
GDB调试器以战说法
Strike the table in surprise
Debug Wars using GDB
随着软件复杂度的不断增加,软件调试的难度越来越大。以调试器为核心的调试技术是征服软件世界的一把利剑。要想成为软件高手,认真修炼调试器这门剑法是值得投入的。
本系列讲座通过8个精选案例让参与者在实战中“事上磨练”,快速进阶。这些案例都源于真实的软件产品和项目,既有深度,又有广度,覆盖Linux平台上的常用软件和典型调试场景。涵盖的技术包括交互式调试、转储文件分析、逆向工程、反调试(加壳)与化解等。
本系列课程由《软件调试》和《格蠹汇编》的作者张银奎(格蠹老雷)亲自讲授,上调试器抓真BUG,以战说法,剖微穷深。
形式
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。
知识点
段错误、调用规约。
战役2:何人传来空指针?
要点
Linux下重要后台服务(Daemon)随机崩溃、深挖到底、竟然与C语言的规范有关、让你深刻认识C与C++的一个大不同之处、感受著名的头文件陷阱。
工具和主要技能
GDB、GCC、map、dmesg、调试Linux应用程序、反汇编、插入代码JIT调试。
知识点
虚拟内存、分页机制、页表、缺页异常、段错误、空指针、AT&T汇编和Intel汇编、调用规约。
战役3:文件混乱是真的吗?
要点
应用程序与驱动程序通信时、驱动程序总是收到错误的数据、打印出来观察、竟然是日志信息送给了驱动。
工具和主要技能:
GDB、printk、dmesg。
知识点
虚拟文件系统、Linux驱动程序、文件对象和描述符、与应用程序通信、标准文件。
战役4:线程拥堵之谜
要点
多线程并行、线程同步、lock和unlock、线程死锁、使用GDB观察多线程、LLL系列函数。
工具和主要技能
GDB、thread apply all。
知识点
线程、同步对象。
战役5:栈上的缓冲区溢出
要点
局部变量越界、栈大小、栈帧、栈帧布局、gcc的栈保护机制、栈的优点、在栈上动态分配。
工具和主要技能:
GDB、gcc。
知识点
栈缓冲区溢出、stack protector。
战役6:谁踩了我的数据?
要点
使用GDB等多种工具深度解析Linux下的用户态堆和动态内存分配的典型问题、包括多次释放、溢出等、现场演练使用GDB跟踪ptmalloc堆的技巧以及使用valgrind工具的方法。
工具和主要技能
GDB、valgrind、交互式调试、调试内存有关的问题。
知识点
内存的多层管理、堆的结构、arena、堆块、分配和释放过程、valgrind工作原理。
战役7:反调试与化解
要点
调试器工作原理、反调试的背景、反调试的一般方法、检查调试器、隐藏调试器、记时法反跟踪、倒车调用。
工具和主要技能:
GDB、objdump、调试器检测、Anti-Debug和应对。
知识点
ptrace、信号、自定义信号处理、单步标志、硬件断点寄存器、异常处理器、内存HASH检测。
战役8:CORE文件产生和分析
要点
内存转储、CORE之名、产生core文件的方法、使用gdb分析core文件、file命令、常遇到的障碍、跨机器分析、定制库搜索路径。
工具和主要技能
GDB、readelf、generate-core-file。
知识点
ELF格式和CORE格式、libc。
讲师介绍
张银奎
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和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。
报名或垂询
标准价格:680元
包括:
8次线上讲座
2年内使用NanoCode客户端回看录像
课程期间微信群讨论和答疑
优惠条款:
兰舍成员5折优惠
试验环境:幽兰代码本
购买方式:
Nano Code内购买(课程号:260)
在Nano Code的Nano视频中直接购买,购买后会通过Nano Code的绑定邮箱,发送上课方式到该邮箱内。
*注:Nano Code中的课程价格默认为标准价格680元,如符合优惠条款,可联系课程顾问退还差价。
微信 / 支付宝 付款
完成付款后,请发送邮件到[email protected]进行登记,上课方式也会发送到该发件邮箱内。
联系我们:
课程顾问:Lisa
咨询电话:13801874134 (微信同号)
报名邮箱:[email protected]
公司付款信息
账户名称:格蠹信息科技(上海)有限公司
开户行:招商银行股份有限公司上海浦江镇支行
账号:1219 3085 8010 501
【盛格塾】
正心诚意,格物致知
以人文情怀审视软件,以软件技术改变人生
格友公众号
盛格塾小程序
扫描上方二维码或在微信中搜索“盛格塾”小程序
可以阅读更多文章和有声读物
往期推荐
穿越两大空间的调用栈
幽兰代码本——开源软件实践家
戒慎乎不睹,大模型体验记
LINUX平台高级调试和优化(庐山太乙站)