coredump文件解析
- 功能说明
解析coredump文件。
- 产品支持情况
产品
是否支持
Atlas A3 训练系列产品 /Atlas A3 推理系列产品 √
Atlas A2 训练系列产品 /Atlas A2 推理系列产品 √
Atlas 200I/500 A2 推理产品 √
Atlas 推理系列产品 √
Atlas 训练系列产品 √
- 注意事项
coredump解析功能依赖gdb,需提前安装gdb,可通过包管理(如apt-get install gdb、yum install gdb)进行安装,详细安装步骤及使用方法请参见GDB官方文档。
- 命令格式
asys analyze -r=coredump --exe_file=filename --core_file=filename --reg=reglevel --symbol=value --output=path
- 参数说明
- r :必选参数,解析模式,此处设置为coredump。在执行任务过程中进程中断退出,软件在退出时会报Segmentation fault等错误,可以使用该功能解析coredump生成的core文件,获取stackcore格式的堆栈文件(*.txt文件),供后续定位使用。
- exe_file:程序coredump时的可执行文件,此处设置为包含路径的文件名,coredump模式必选,需要保证与core_file相匹配,否则解析结果错误。
- core_file:程序coredump时生成的core文件,此处设置为包含路径的文件名,coredump模式必选,需要保证与exe_file相匹配,否则解析结果错误。
- reg:coredump功能添加寄存器数据的模式,只支持0、1和2,默认为0,coredump模式可选。
- 0:不添加寄存器数据。
- 1:每个线程加一条寄存器数据。
- 2:线程的所有栈都添加寄存器数据(占用Host资源较多,比较耗时)。
- symbol:coredump功能解析模式,只支持0和1,默认为0,coredump模式可选,地址不存在或栈溢出可能导致asys工具无法解析。
- 0:将所有带地址行解析成stackcore格式的文件,其他行显示Ignore,表示跳过不解析。
- 1:只解析in ?? () 行,其他行保留gdb堆栈的原数据
- output:可选参数,其值作为asys工具的结果输出目录的路径前缀,即最终输出目录为{output}/asys_output_timestamp。命令行中不带output参数时,输出结果存放在命令行执行目录下;若output指定值为空、无效字符串、或指定路径目录无写权限、或创建目录失败,则asys工具退出执行并报错。
- 使用示例及输出说明
- 将symbol指定为0(解析所有地址行)
asys analyze -r=coredump --exe_file=atrace_test --core_file=core_atrace_test_001 --symbol=0 --output=$HOME/dfx_info
解析后的stackcore格式文件示例如下,后续可以使用asys工具的stackcore文件解析功能进一步解析。
[process] crash reason: SIGABRT crash pid: 37246 crash tid: 37246 [stack] Thread 1 (37246) #00 0x00007fbad83792bf 0x00007fbad830b000 /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 #01 Ignore #02 0x00007fbad83d8c22 0x00007fbad830b000 /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 #03 0x00007fbad83e9648 0x00007fbad830b000 /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 ...... [maps] Start Addr End Addr Size Offset objfile 0x562677ed1000 0x562677ed2000 0x1000 0x0 /usr/local/python3.7.5/bin/python3.7 0x562677ed2000 0x562677ed3000 0x1000 0x1000 /usr/local/python3.7.5/bin/python3.7 0x562677ed3000 0x562677ed4000 0x1000 0x2000 /usr/local/python3.7.5/bin/python3.7 0x562677ed4000 0x562677ed5000 0x1000 0x2000 /usr/local/python3.7.5/bin/python3.7 ...... - 将symbol指定为1(只解析in ?? () 行)
asys analyze -r=coredump --exe_file=atrace_test --core_file=core_atrace_test_002 --symbol=1 --output=$HOME/dfx_info
解析后的stackcore格式文件示例如下,后续可以使用asys工具的stackcore文件解析功能进一步解析。
[process] crash reason: SIGABRT crash pid: 37246 crash tid: 37246 [stack] Thread 1 (37246) #00 0x00007fbad83792bf in lookdict_unicode (value_addr=0x7ffea1e917e8, hash=<optimized out>, key=<optimized out>, mp=0x7fba98907fa0) at Objects/dictobject.c:811 #01 lookdict_unicode (mp=0x7fba98907fa0, key=<optimized out>, hash=<optimized out>, value_addr=0x7ffea1e917e8) at Objects/dictobject.c:783 #02 0x00007fbad83d8c22 in PyDict_GetItem (op=op@entry=0x7fba98907fa0, key=key@entry=0x7fba9a15b570) at Objects/dictobject.c:1327 #03 0x00007fbad83e9648 in _PyObject_GenericGetAttrWithDict (obj=obj@entry=0x7fba989083b0, name=name@entry=0x7fba9a15b570, dict=0x7fba98907fa0, dict@entry=0x0, suppress=suppress@entry=0) at Objects/object.c:1268 ...... [maps] Start Addr End Addr Size Offset objfile 0x562677ed1000 0x562677ed2000 0x1000 0x0 /usr/local/python3.7.5/bin/python3.7 0x562677ed2000 0x562677ed3000 0x1000 0x1000 /usr/local/python3.7.5/bin/python3.7 0x562677ed3000 0x562677ed4000 0x1000 0x2000 /usr/local/python3.7.5/bin/python3.7 0x562677ed4000 0x562677ed5000 0x1000 0x2000 /usr/local/python3.7.5/bin/python3.7 ......
- 将symbol指定为0(解析所有地址行)
父主题: asys工具使用指导