首页
›
编程基础与工程化
›
015-多线程
›
《指针越界与多线程崩溃修复实战》
VIP20
本课程属于:015-多线程
编程基础与工程化 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
指针越界 & 多线程崩溃修复实战
📚 共计 30 章节
01
崩溃的本质
什么是指针越界?什么是多线程数据竞争?从CPU和内存视角看崩溃的底层原理。
CPU视角
内存模型
02
指针越界经典场景
数组越界、字符串操作越界、栈缓冲区溢出、堆内存越界。
栈溢出
堆越界
03
多线程崩溃根源
数据竞争 (Data Race)、死锁 (Deadlock)、活锁 (Livelock)、饥饿 (Starvation)。
死锁
数据竞争
04
调试工具链
GDB调试崩溃、AddressSanitizer (ASan) 检测内存错误、ThreadSanitizer (TSan) 检测数据竞争。
ASan
TSan
GDB
05
实战案例一
修复一个典型的数组越界导致的段错误 (Segmentation Fault)。
段错误
数组越界
06
实战案例二
修复多线程下共享变量未加锁导致的coredump。
coredump
互斥锁
07
实战案例三
修复使用已释放内存 (Use-After-Free) 导致的随机崩溃。
UAF
悬垂指针
08
实战案例四
修复double free或内存泄漏导致的堆损坏。
double free
堆损坏
09
实战案例五
修复多线程死锁导致的服务hang住。
死锁
hang
10
防御性编程
边界检查、断言 (assert)、RAII与智能指针。
RAII
智能指针
11
并发编程最佳实践
互斥锁 (mutex)、读写锁 (rwlock)、条件变量 (condition variable) 的正确使用。
mutex
条件变量
12
原子操作与内存序
std::atomic、memory_order_relaxed/consume/acquire/release/acq_rel/seq_cst。
原子操作
内存序
13
无锁编程入门
CAS操作、ABA问题、内存回收难题。
CAS
ABA
14
线程安全的数据结构
如何设计一个线程安全的队列、栈、哈希表。
线程安全
数据结构
15
信号量与屏障
std::counting_semaphore、std::latch、std::barrier。
信号量
屏障
16
线程池设计与实现
任务队列、工作线程、优雅关闭。
线程池
任务队列
17
协程与异步编程
C++20协程基础、避免协程中的悬垂引用。
协程
悬垂引用
18
内存模型深度解析
C++内存模型、happens-before关系、顺序一致性。
happens-before
顺序一致性
19
编译器优化对多线程的影响
volatile、编译器屏障、asm volatile。
编译器屏障
volatile
20
性能分析
使用perf、valgrind、火焰图定位性能瓶颈与崩溃热点。
perf
火焰图
21
Windows平台调试
WinDbg、Visual Studio诊断工具、MiniDump分析。
WinDbg
MiniDump
22
Linux平台调试
gdb core dump分析、strace、ltrace、/proc文件系统。
gdb
strace
23
容器化环境下的调试
Docker中生成core dump、Kubernetes Pod崩溃排查。
Docker
K8s
24
日志系统设计
如何设计一个线程安全、高性能、低延迟的日志库。
日志
高性能
25
崩溃自动恢复
信号处理 (SIGSEGV、SIGABRT)、Google Breakpad、异常安全保证。
Breakpad
信号处理
26
代码审查清单
针对指针安全和并发安全的Code Review Checklist。
Code Review
安全清单
27
单元测试与压力测试
Google Test、Google Benchmark、模拟高并发场景。
GTest
压力测试
28
静态分析工具
Clang-Tidy、Clang Static Analyzer、Cppcheck、Coverity。
Clang-Tidy
Coverity
29
大型项目实战
在一个百万行C++项目中系统性排查和修复内存与并发问题。
百万行
系统排查
30
总结与进阶
从崩溃修复到系统稳定性设计,推荐书籍与学习路径。
学习路径
稳定性设计
所属VIP或分类
同VIP:Qt多线程与信号槽实战
同VIP:Qt多线程与界面卡顿解决实战
同VIP:从零掌握多线程内存管理