Q:使用Release应用堆栈解析功能时,提示"Incorrect path format in line X"的原因及解决措施是什么?
A:
问题原因:堆栈解析功能会将含有(路径:行号:列号)的堆栈识别为ArkTS堆栈进行解析,会对堆栈进行进一步的校验,路径不能含有运行系统下的不合法字符。如果输入的某行堆栈不满足上述形式,则会提示"Incorrect path format in line X"。
解决措施:请排查输入堆栈是否满足“(路径:行号:列号)”的格式,若不满足应按照格式进行修改,并重新解析。
Q:使用Release应用堆栈解析功能时,提示"Failed to find the source file in line X"的原因及解决措施是什么?
A:
问题原因:在不勾选Unscramble stack trace的情况下,会将堆栈默认为是当前工程产生的堆栈,从本工程中获取解析需要的文件,解析结果也会从当前工程中寻找源文件,如果不存在会提示"Failed to find the source file in line X"。在勾选Unscramble stack trace的情况下,ArkTS堆栈解析结果是相对路径,不会去寻找源文件,so解析结果如果不存在会提示"Failed to find the source file in line X"。
解决措施:如果解析结果不包含一个绝对路径,可以用“file”命令检查so是否包含debuginfo。检查堆栈对应工程与所打开工程的是否一致,并检查堆栈对应的源文件是否存在。如果是自提供的so文件,请确定是产生当前堆栈的so。
Q:使用Release应用堆栈解析功能时,提示"SourceMap error in line X"的原因及解决措施是什么?
A:
问题原因:解析堆栈信息时,DevEco Studio需要sourceMap将堆栈中的bundle文件信息映射为源码信息。如果没有提供相应的sourceMap,或者sourceMap文件不一致,或堆栈被修改,导致堆栈与sourceMap不匹配。出现上述情况则可能导致无法将堆栈中的信息映射为源码信息,此时会提示"SourceMap error in line X"。
解决措施:检查所打开工程中的bundle文件与生成堆栈信息对应的bundle文件是否一致,如不一致,利用生成堆栈时的源码构建Release版本App,再进行堆栈解析。如果是FA模型产生的堆栈,请在对应工程中不勾选Unscramble stack trace进行解析。勾选情况下,FA模型产生的堆栈无法匹配到源码信息。
Q:使用Release应用堆栈解析功能时,提示"So Error in Line X"的原因及解决措施是什么?
A:
问题原因:解析堆栈信息时,DevEco Studio需要用so文件将so的堆栈映射为源码信息,如果没有提供对应的so,则可能导致无法将堆栈中的信息映射为源码信息,此时会提示"So error in Line X"。
解决措施:请提供堆栈对应的so文件,确保so包含符号信息,可以使用"file"命令查看so是否为"not striped"。若so为"striped",说明so的信息已被清除,可在模块级build-profile.json5中的debugSymbol->strip字段置为false。
Q:使用Release应用堆栈解析功能时,提示"Failed to find source data in line X"的原因及解决措施是什么?
A:
问题原因:如果输入堆栈中存在字符串"Cannot get SourceMap info, dump raw stack:",DevEco Studio则会将其所在行替换为:"Error Line: +第一条解析成功的堆栈对应的源码数据"。当第一条解析成功的堆栈对应的源码不存在时(比如源码可能已被修改),则会提示:"Failed to find source data in line X:"。
解决措施:检查源码是否存在,如果不存在,将源码文件改为堆栈信息对应的源码文件。
Q:使用Release应用堆栈解析功能时,提示"Failed to find the bundle file in line X"的原因及解决措施是什么?
A:
问题原因:未勾选Unscramble stack trace时,堆栈解析功能需要在打开对应工程并构建App对应Release版本的条件下使用。对于输入的堆栈信息,DevEco Studio会根据对应工程类型的路径转换规则寻找堆栈对应的Release版本bundle文件,如果转换后的路径对应bundle文件不存在,则会提示"Failed to find the bundle file in line X:"。
解决措施:打开工程并构建对应App的Release版本,重新输入堆栈进行解析。