前提条件
- RAM 转储及对应的
vmlinux文件。 - 软件镜像和脚本:
- Windows PC
- Python 3.7 或更高版本
- Pyelftools 软件包:
- 从 Github-Pyelftools 下载 Pyelftools 软件包。
- 解压下载的文件,找到
pyelftools-master>elftools目录。 - 将 elftools 目录复制到
<installed Python path>\Lib\site-packages。
- RAMParser 软件:从 Git-Codelinaro 下载 RAMParser 软件。 注意 RAMParser 软件必须始终位于 Windows 主机的 C 盘上。
- C 盘(
C:\T32)上安装 TRACE32 软件 2023.12 或更高版本。此项为可选。TRACE32 软件使用 RAMParser 输出文件将 RAM 转储加载到 TRACE32 模拟器中。
设置工具链
RAMParser 需要访问 gdb 和 nm 工具。您可以通过以下方式之一指定 gdb 和 nm 工具的路径:- 使用
--gdb-path和--nm-path指定绝对路径 - 使用
CROSS_COMPILE指定前缀 - 使用
local_settings.py文件
不支持仅在系统路径中提供
gdb 或 nm 命令,因为工具名称的变体太多,无法直接调用。local_settings.py 文件设置工具链,请执行以下操作:
- 在根目录中创建
ramparser_utils\utils目录。 - 从 Arm GNU toolchain 将工具链(aarch64-none-linux-gnu)下载到
ramparser_utils\utils目录中。
local_settings.py 文件中指定这些独有设置。由于 local_settings.py 是一个 Python 文件,它可以利用 Python 的特性。
注意
为了让 RAMParser 获取工具链实用程序的正确路径,请将 local_settings.py 文件添加到 <root>/tools/linux-ramdump-parser-v2 目录路径中。
local_settings.py 文件的格式为:
local_settings.py 文件支持以下功能:
表:local_settings.py 文件支持的功能
示例:local_settings.py
RAMParser 命令
- 要使用 RAMParser 解析转储,请在 Windows Shell 中运行以下命令:
<hw name>:此字符串指定芯片组的硬件 ID。请参见下表并使用相应的值。python ramparse.py:此文件用于调用 RAMParser。mod_path:指定此选项,将所有未剥离(unstripped)的内核模块复制到一个目录中,并将其作为--mod_path选项引用的符号路径。<parser options>:指定解析器选项以从 RAM 转储中提取特定数据。此外,您还可以在命令中传递子解析器选项以提取相关数据。例如,要提取 ftrace 信息,请传递--dump-ftrace及相关参数并运行以下命令:同样,要提取 kconfig 信息,请传递--print-kconfig。有许多可用选项可以解析转储并将输出存储到目录中。- 要查看所有可用命令和选项,请运行以下命令:
查看 RAMParser 日志
RAMParser 会生成关于工作队列、进程状态和调用堆栈的大量数据。下表列出了 RAMParser 执行期间生成的重要文件。 表:RAMParser 生成的文件
下图显示了 RAMParser 生成的示例数据:

图:运行队列(dmesg_TZ.txt)

图:IRQ 状态(dmesg_TZ.txt)

图:内核崩溃示例(dmesg_TZ.txt)

图:各核心的定时器列表(timerlist.txt)

图:工作队列(dmesg_TZ.txt)

图:内存统计信息(mem_stat.txt)

图:CPU 频率(dmesg_TZ.txt)

图:TRACE32 模拟器启动器(launch_t32.bat)

