概述
SylixOS Crash 分析工具 是 vscode 下 SylixOS 开发插件中提供的工具集中的一个小工具。它可以协助开发者去分析可执行文件产生 crash 行为的原因。
工作原理
SylixOS Crash 分析工具 借助 SylixOS 编译器中的 addr2line 命令行对地址进行分析。因此,此工具最终工作原理即调用 addr2line 对可执行文件执行类似下述命令:
xxxx-addr2line.exe -f -e xxx.ko -a 0x1000
使用方法
SylixOS Crash 分析工具 在安装激活了 SylixOS 插件后,就可以正常工作,其操作界面位于 vscode “资源管理器”下,如果所示:
添加待分析的可执行文件
当可执行文件执行时,发生了崩溃行为,可以采用如下两种方式将可执行文件添加到 SylixOS Crash 分析工具 中:
自动添加:
如果可执行文件就在当前的 vscode workspace 下,那么可以直接右击可执行文件,选择“SylixOS 可执行文件分析”,如下所示:
手动添加:
如果可执行文件没有办法直接在 vsocde 的 workspace 下添加,则可以通过 SylixOS Crash 分析工具 右边的“添加文件”按钮,手动添加,如下所示:
注意:
- 架构获取失败:
如果 SylixOS Crash 分析工具 添加可执行文件时,会去自动分析当前可执行文件应该选择哪种架构的 addr2line 工具去执行。如果 SylixOS Crash 分析工具 获取架构信息失败时,会弹出如下界面,此时需要用户手动选择对应的架构信息:
- 可执行文件要求:
添加的 SylixOS 可执行文件不应该选择“strip”目录下的可执行文件,否则会导致无法正确分析地址。
添加成功后,SylixOS Crash 分析工具 中会显示添加成功的可执行文件,如下所示:
设置运行基地址
在可执行文件添加完成后,默认运行基地址是没有设置的,此时,可以添加对应可执行文件后边的“基地址”进行设置,如下所示:
注意:
- 运行基地址的获取,参考 SylixOS 相关命令和用法,这里提供一些参考:
- 一般 BSP elf 文件:运行基地址一般设置为:0x0;
- 一般内核模块的 ko 文件:通过“lsmod”命令可以查看运行基地址;
- 一般的应用库或者 APP 可执行文件:可以先通过“VPROC_MODULE_SHOW=1”设置 SylixOS 的环境变量,然后再运行可执行文件,进而获取到基地址。
- 运行基地址设置时,应该是 16 进制的,“0x”包不包含均可,即设置“1000” 和 “0x1000”效果一致;
- 运行基地址是可以重复更新的,如果运行基地址发生变化,则按照上述方式重新设置即可。
设置成功后,会在对应的文件右边显示出当前的基地址设置的值,如下所示:
crash 地址分析
完成上述两步设置后,就可以对需要分析的 crash 地址进行分析,分析的方法很简单:在对应的可执行文件右侧点击“分析”按钮,然后输入 crash 地址,如下所示:
分析成功后,会在对应的文件下显示出分析的内容:
其中分析结果格式从左到右分别是:
[crash 地址] crash 函数:crash 代码的行数
同时,当鼠标停留在上面时,会显示对应的文件位置。点击此结果时,会自动打开出错文件,并跳转到出错行附近。
注意:
- 分析的地址应该是 16 进制地址,包不包含“0x”均可;
- 如果分析失败时,不会在左侧列出分析结果,而是直接将 addr2line 的信息在 vscode 的右侧展示出来,如下:
清空分析文件
当需要清空当前所有的分析文件时,可以点击 SylixOS Crash 分析工具 右侧的“清空”按钮:
其他
当前工具已经支持 crash 分析信息记录功能。用户使用工具分析的所有结果都会同步保存在 workspace 的存储空间中,当 vscode 下次打开时,仍然可以看到之前的分析结果 😃