用 CLion 定位基于 RK3568 嵌入式 Linux 5.10.160 Core Dump 崩溃问题
嵌入式 Linux 上调试偶发崩溃是件头疼事:现场复现成本高、串口打印有限、gdb 直接 attach 又会打断业务。把 core dump 落盘、拿回开发机用 CLion 慢慢分析,是性价比最高的做法。本文以飞凌 OK3568 开发板(RK3568, Linux 5.10.160, Buildroot)为例,走完"板上开启 core dump → 触发崩溃 → 开发机用 CLion 做可视化崩溃分析"的全链路。
1. 基本概念
1.1 什么是 core dump
程序异常退出时(SIGSEGV、SIGABRT、SIGBUS……),内核会把进程的内存映像、寄存器状态、调用栈等信息快照成一个文件,这个文件就是 core dump,也叫核心转储。有了它,哪怕崩溃现场早已不在,也能回到"案发瞬间"把变量、堆栈都看一遍。
对嵌入式场景来说,core dump 还有一个独特价值:现场只需要抓文件,分析放到 x86 开发机上做,不用在板子上准备完整的调试环境。
1.2 什么是符号文件
符号文件(Symbol File)是把"二进制地址"翻译回"源码位置和变量名"的那本词典。调试器拿到 core dump,看到的是一堆地址——0x00400a3c、0x7f8b2c1d 这种,没有符号文件它只能告诉你"崩在 0x00400a3c",有了符号文件它才能告诉你"崩在 main.cpp:86 的 r_array[i]->SetHeight()"。
符号文件里有什么
ELF 格式里,符号信息分两层:
类型 | 包含内容 |