01
日志系统基础
为什么实时系统需要日志?日志级别(DEBUG、INFO、WARN、ERROR、FATAL)的定义与选择策略。
日志级别基础概念
02
日志框架选型
主流C/C++日志库(spdlog、log4cxx、zlog)对比与选型指南。
spdloglog4cxxzlog
03
日志输出目标
控制台、文件、网络、环形缓冲区(Ring Buffer)的实现与适用场景。
输出Ring Buffer
04
日志格式设计
时间戳、线程ID、模块名、日志级别、上下文信息的格式化技巧。
格式化上下文
05
异步日志原理
双缓冲机制、批量写入、磁盘I/O优化,避免日志阻塞业务线程。
双缓冲异步
06
日志轮转策略
按大小轮转、按时间轮转、按日期轮转的配置与实现。
轮转文件管理
07
日志分类与过滤
按模块、按级别、按关键字动态过滤日志,降低海量日志的干扰。
过滤动态
08
日志性能基准测试
如何测量日志吞吐量、延迟、CPU占用,以及优化方向。
性能基准测试
09
调试基础概念
GDB入门、断点类型(硬件断点、软件断点、条件断点)、单步执行。
GDB断点
10
GDB高级技巧
回溯调用栈、查看内存、修改变量、反汇编调试、多线程调试。
回溯多线程
11
Core Dump分析
生成Core Dump、使用GDB分析崩溃现场、定位段错误。
Core Dump段错误
12
Valgrind内存检测
Memcheck检测内存泄漏、未初始化内存、越界访问。
Valgrind内存泄漏
13
AddressSanitizer
编译时插桩,快速检测堆栈缓冲区溢出、Use-After-Free。
ASan溢出
14
静态分析工具
Cppcheck、Clang-Tidy、Coverity在实时系统中的应用。
静态分析Cppcheck
15
动态追踪技术
SystemTap、eBPF、perf工具在实时系统中的低开销追踪。
eBPFperf
16
实时系统调试难点
时序问题、竞态条件、死锁、优先级反转的识别与复现。
竞态死锁
17
日志与调试结合
通过日志复现问题、在关键路径添加临时日志、日志染色。
日志染色复现
18
Tracepoint与用户态探针
使用uprobe、USDT在用户态程序插入动态探针。
uprobeUSDT
19
实时日志压缩与传输
LZ4/Zstd压缩、UDP/TCP传输、日志中心化收集。
压缩传输
20
日志安全与隐私
脱敏处理、日志访问控制、合规性要求(GDPR等)。
脱敏GDPR
21
分布式实时系统日志
OpenTelemetry、分布式追踪(TraceID、SpanID)、日志关联。
OpenTelemetryTraceID
22
日志可视化
ELK Stack(Elasticsearch、Logstash、Kibana)搭建与查询。
ELKKibana
23
断言与契约式设计
assert、static_assert、运行时契约检查在调试中的作用。
断言契约
24
单元测试与模拟
Catch2、Google Test在实时模块测试中的应用,Mock硬件依赖。
Catch2Google Test
25
硬件辅助调试
JTAG/SWD调试器、ETM/ETB指令追踪、逻辑分析仪与日志同步。
JTAGETM
26
RTOS调试技巧
FreeRTOS任务栈溢出检测、任务状态监控、调度延迟分析。
FreeRTOS栈溢出
27
Linux实时内核调试
PREEMPT_RT补丁、ftrace、trace-cmd、内核日志分析。
PREEMPT_RTftrace
28
日志驱动开发(LDD)
先写日志再写代码,用日志验证设计正确性。
LDD设计
29
自动化异常检测
基于日志的异常检测算法、规则引擎、AI辅助根因分析。
异常检测AI
30
综合实战
构建一个完整的实时控制系统日志与调试体系,从设计到运维。
实战体系