VIP20
本课程属于:015-多线程 编程基础与工程化 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录 咨询 / 购买

指针越界与多线程调试与故障定位实战

📚 共计 30 章节
01
指针的本质:内存地址与间接访问
指针的声明与初始化,野指针的成因与危害
内存基础
02
指针运算与数组
指针的算术运算,指针与数组的等价关系,数组越界的经典场景
数组越界
03
动态内存管理
malloc/free与new/delete,内存泄漏的检测,悬空指针的产生
堆泄漏
04
多线程基础
线程的创建与销毁,线程同步的必要性,数据竞争的概念
线程同步
05
互斥锁与死锁
std::mutex的使用,死锁的四个必要条件,避免死锁的策略
锁死锁
06
条件变量与信号量
std::condition_variable,生产者-消费者模型,信号量的应用
同步信号量
07
原子操作与内存序
std::atomic,内存序模型(relaxed/acquire/release),无锁编程入门
原子无锁
08
线程安全队列
实现一个线程安全的队列,锁的粒度控制,性能对比
并发性能
09
调试工具入门
GDB基础命令,断点与观察点,core dump分析
GDB调试
10
AddressSanitizer
ASan的原理,编译选项,检测越界与泄漏
ASan内存
11
ThreadSanitizer
TSan的原理,检测数据竞争,误报处理
TSan数据竞争
12
Valgrind套件
Memcheck检测内存错误,Helgrind检测线程错误
Valgrind检测
13
静态分析工具
Clang Static Analyzer,Cppcheck,PVS-Studio
静态分析工具
14
日志与追踪
spdlog库的使用,分布式追踪概念,日志级别与性能
日志spdlog
15
崩溃分析
信号处理(SIGSEGV),backtrace的获取,minidump生成
崩溃backtrace
16
堆内存调试
堆栈跟踪,内存分配器(jemalloc/tcmalloc),调试分配器
堆分配器
17
指针越界实战案例
字符串操作越界,数组遍历越界,memcpy越界
越界实战
18
多线程数据竞争案例
未保护共享变量,双重检查锁定,虚假共享
数据竞争案例
19
死锁实战案例
锁顺序不一致,嵌套锁,忘记解锁
死锁实战
20
内存泄漏实战案例
忘记释放,循环引用,异常安全
泄漏循环引用
21
调试策略
二分法定位,最小复现用例,回归测试
策略调试
22
性能分析
perf工具,火焰图生成,锁竞争优化
性能火焰图
23
代码审查
常见指针错误模式,多线程代码审查清单
审查清单
24
防御性编程
断言的使用,边界检查,RAII惯用法
防御RAII
25
智能指针
std::unique_ptr,std::shared_ptr,std::weak_ptr
智能指针RAII
26
线程池实现
任务队列,工作线程,动态调整
线程池并发
27
读写锁
std::shared_mutex,读多写少场景优化
读写锁优化
28
无锁数据结构
无锁栈,ABA问题,hazard pointer
无锁ABA
29
调试哲学
心态调整,系统思维,工具链整合
哲学思维
30
综合项目
多线程服务器调试,内存问题排查,性能调优
项目综合