第1章
C++工程结构
认识CMakeLists.txt · 头文件与源文件分离 · 多文件编译入门
CMake结构
第2章
GCC/G++编译器
编译流程(预处理、编译、汇编、链接)· 常用选项 -g -O -Wall -std
GCC编译选项
第3章
Makefile基础
Makefile语法 · 目标与依赖 · 变量与自动变量 · 伪目标
Makefile构建
第4章
CMake入门
CMakeLists.txt编写 · 构建与生成 · 设置C++标准 · 添加可执行文件
CMake构建
第5章
GDB入门
启动与退出 · 设置断点(break) · 运行(run) · 单步调试(next, step)
GDB断点
第6章
GDB核心命令
打印变量(print) · 查看内存(x) · 堆栈(backtrace) · 切换帧(frame)
GDB调试
第7章
条件断点与观察点
break if · 观察点(watch) · 捕获点(catch)
断点观察
第8章
调试多文件项目
多文件断点 · 列出源码(list) · 搜索源码
多文件GDB
第9章
调试段错误
段错误原因 · backtrace定位崩溃 · 空指针与野指针
段错误崩溃
第10章
调试内存泄漏
valgrind配合GDB · 定位未释放内存 · 检查堆内存
内存泄漏valgrind
第11章
调试多线程
查看线程(info threads) · 切换线程(thread) · 线程断点
多线程GDB
第12章
调试死锁
检测死锁 · 查看锁状态 · 手动解锁调试
死锁并发
第13章
调试Core Dump
开启core dump · 分析core文件 · 定位崩溃现场
Core Dump分析
第14章
调试Release版本
优化对调试的影响 · -O0编译 · strip符号表
Release优化
第15章
GDB脚本与自动化
GDB命令脚本 · 定义函数 · 条件循环调试
脚本自动化
第16章
调试动态库
设置动态库搜索路径 · 调试动态库函数 · 断点动态库
动态库GDB
第17章
调试STL容器
打印vector, map, string · 自定义pretty-printer
STL容器
第18章
调试函数调用
查看函数参数 · 返回值 · 调用栈深度
函数调用栈
第19章
调试内联函数与模板
内联函数断点 · 模板实例化调试
内联模板
第20章
调试性能问题
使用profile工具 · 结合GDB分析热点函数
性能profile
第21章
调试汇编级别
查看汇编(disassemble) · 单步汇编(stepi, nexti) · 查看寄存器
汇编寄存器
第22章
调试远程目标
gdbserver使用 · 远程调试嵌入式程序
远程gdbserver
第23章
调试C++异常
捕获异常断点(catch throw) · 查看异常对象
异常catch
第24章
调试信号
信号处理 · 设置信号传递 · 忽略特定信号
信号GDB
第25章
调试宏
展开宏(macro expand) · 查看宏定义
宏预处理
第26章
调试日志与记录
设置日志文件 · 记录调试会话 · 回放日志
日志记录
第27章
调试图形界面
DDD · Eclipse CDT · VS Code集成GDB
图形IDE
第28章
实战案例1:数组越界与字符串溢出
数组越界 · 字符串溢出 · 调试分析
实战数组
第29章
实战案例2:智能指针与RAII
智能指针 · RAII资源管理 · 内存调试
智能指针RAII
第30章
实战案例3:多线程生产者消费者
生产者消费者模型 · 多线程调试 · 同步
多线程生产者消费者