gs_py
简介
用于Linux环境下的GS崩溃后的coredump调试工具。
在Linux环境下,当程序运行的过程中出现异常中断或崩溃时,操作系统会将程序当时的运 行状态信息记录下来并保存在coredump。Coredump中保存有内存信息、寄存器信息、调用栈信息等,并可以通过gdb的thread、info等命令查看。这是定位程序异常崩溃问题的重要手段。
对于gs编译器而言,查看操作系统层次的信息是不够的,还需要driver层的信息,因为driver是业务层的低层,业务层内存、栈、寄存器等信息都保存在driver层中。而目前使用gdb工具,driver层的信息只能像普通应用程序一样通过类似p命令的方式获取,十分不方便。因此考虑基于gdb提供的python接口,为gs开发一个coredump可视化工具,方便在gdb中快速查看drive的信息,从而帮助快速定位问题。
gs.py 文件位置: https://m68gitlab.g-bits.com/pkgs/gs_py.git
使用方式
在gdb环境下,使用gs.py脚本分析coredump信息。步骤如下:
- 将coredump文件(一般命名为 core.xxxx )、coredump对应的driver、gs.py文件拷贝到同一目录。
- 在terminal终端进入步骤1的目录下,输入命令gdb gs core.xxx文件名,进入gdb调试模式。
- 输入命令so gs.py加载脚本。
- 用 "命令列表" 中的命令获取需要的信息
若出现警告 warning: RTTI symbol not found for class, 请以如下形式启动coredump调试:
gdb gs core.xxx 2>warn.txt
将所有警告信息重定向到文件以便于查看 gs.py 分析结果,driver的编译过程中默认保留了RTTI(运行时类型信息),目前查阅到的信息显示该警告由gdb的bug产生。