You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
Android 端监控
崩溃未上报
复制全文
下载 pdf
崩溃未上报
如果App端崩溃未上报,请先确认是否未开通服务,或者事件量用尽。在排除这两种情况后,可以根据以下几种方式进行问题排查。
方式一:通过日志排查
  1. 在初始化MonitorCrash前,打开日志开关,调用Npth.getConfigManager().setDebugMode(true),过滤npth的日志。
  1. 打开日志开关后,会出现如下配置更新日志。
  • 2022-09-22 21:16:20.756 5319-5367/com.example.crash.test I/npth: update config 187277 : {"crash_module":{"alog_crash_before_time":"60","switcher":1,"upload_alog":"1"}}
    2022-09-22 21:16:20.757 5319-5367/com.example.crash.test I/npth: after update aid 187277
  • 如果没有打印配置更新日志,请排查以下可能的原因:
  • 如果没有对应aid的日志,检查初始化代码、配置项是否正确。
  • 网络是否正常。
  1. 出现Java崩溃,会打印以下捕获日志。
  • I/npth: [uncaughtException] mLaunchCrashDisposer
  • 如果没有打印捕获日志,请排查以下可能的原因:
  • 通过Logcat日志判断,是否确实发生了崩溃。
  • 如果有带FATAL关键字的error日志,那么确实发生了崩溃。
  • 如果没有带FATAL关键字的error日志,检查是否有全局catch的机制。
  • 检查 UncaughtExceptionHandler 注册是否正常。
  • 通过以下示例代码,遍历打印应用内的 UncaughtExceptionHandler。APM 包名为 com.apm.insight的handler。
  • 存在较多 handler 但日志打印中没有包名为 com.apm.insight 的 handler 时,表示没有正常被注册,建议 APM 后初始化。
  • handler 正常注册时,可能存在个别监控 SDK 不转发崩溃的情况,建议 APM 后初始化。排查崩溃未上报时,可以注释对应 SDK 进行验证。
  • Thread.UncaughtExceptionHandler handler = Thread.getDefaultUncaughtExceptionHandler();
    boolean next = false;
    do {
    System.out.println("UncaughtExceptionHandler " + handler.getClass().getName());
    next = false;
    Field[] fields = handler.getClass().getDeclaredFields();
    for (Field field : fields) {
    field.setAccessible(true);
    try {
    Object object = field.get(handler);
    if (object instanceof Thread.UncaughtExceptionHandler) {
    handler = (Thread.UncaughtExceptionHandler)object;
    next = true;
    break;
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    } while (next);
  1. 出现Native崩溃,会打印以下捕获日志。
  • 2022-09-22 21:33:05.023 8847-8847/com.example.crash.test E/npth: Native crash was detected!
    2022-09-22 21:33:05.087 8847-8882/com.example.crash.test I/npth: [onNativeCrash] enter
  • 如果没有打印捕获日志,请排查以下可能的原因:
  • 检查APK打包so是否正常,包括libapminsighta.so和libapminsightb.so。如果有异常,请重新打包。
  1. ANR暂无捕获日志,捕获后会直接上报。
  • I/npth: uploadFromFile with allData [{"header":{"aid":"187277","update_version_code":1,"version_code":1,"app_version":"1.0","channel":"app_channel","device_id":"7550965448758202369","os":"Android","single_upload":0},"custom":{"app_custom":"app_value"},"filters":{"app_tag":"app_value"},"line_num":[{"start":0,"end":34}]},{"header":{"aid":"239017","update_version_code":123,"version_code":123,"app_version":"1.2.3","channel":"sdk_channel","package":["com.bytedance.testsdk1","com.example.crash.test"],"device_id":"7550965448758202369","os":"Android","so_list":["testsdk1.so"],"single_upload":0},"custom":{"sdk1_custom":"sdk1_value"},"filters":{"sdk1_tag":"sdk1_value"},"line_num":[{"start":14,"end":15},{"start":17,"end":21}]},{"header":{"aid":"1003","update_version_code":1,"version_code":1,"app_version":"1.1.1","package":["com.bytedance.testsdk3"],"device_id":"7550965448758202369","user_id":"1003","os":"Android","so_list":["testsdk3.so"],"single_upload":0},"custom":{"sdk3_custom":"sdk3_value"},"filters":{"sdk3_tag":"sdk3_value"},"line_num":[{"start":12,"end":14}]}]
  • Java崩溃和Native崩溃上传日志一致。请排查以下可能的原因:
  • 检查allData是否包含aid。如果没有,请分析堆栈与初始化传入包名是否匹配。
  • 检查网络。
方式二:通过崩溃产物排查
崩溃上报成功后,崩溃相关的产物会被删除,需在崩溃发生后、上报成功前获取崩溃产物并进行检查。
  1. 在设备data/data//files/apminsight下,获取崩溃相关收集到的相关产物。
  1. CrashLogJava下保存Java崩溃、Java启动崩溃、ANR等异常,CrashLogNative保存Native崩溃。
  • 图片
  • 未生成CrashLogNative,检查是否初始化成功。
  • 崩溃路径为空,检查是否初始化成功。其中,ANR可以断网测试。
  • all_data.json不存在,检查是否崩溃堆栈不匹配、配置文件有问题。
  • 图片
  1. 重启文件未删除。
  • 检查网络。
  • 检查APK打包so是否正常,包括libapminsighta.so和libapminsightb.so。
方式三:通过抓包排查
  1. https域名配置(或者直接设置个http的域名)。
  • android:networkSecurityConfig="@xml/network_security_config"
    配置增加火山域名
    <domain includeSubdomains="true">https://apmplus.volces.com</domain>
  1. 上传接口。
  • 接口
    含义
    /monitor/collect/c/crash
    Java崩溃上报、ANR、Dart异常
    /monitor/collect/c/exception
    自定义异常数据上报
    /monitor/collect/c/native_bin_crash
    native崩溃上报
    monitor/collect/c/cloudcontrol/file
    Alog上报文件
    /settings/get
    settings:配置拉取
    /monitor/collect/c/exception/dump_collection
    启动崩溃上报
  1. 抓到对应的包,但是平台仍然不展示。
  • 检查域名配置是否正确。
方式四:通过测试工具排查
test-release.zip
  1. 解压后本地导入,可以将aar复制到app的module的libs目录,然后在app的build.gradle的dependencies添加。
  • implementation files('libs/test-release.aar')
  1. 编译apk会增加测试入口,单击测试入口
  • 图片
  1. 进入测试页面,选择测试项。
  • 图片
最近更新时间:2025.12.05 17:34:36
这个页面对您有帮助吗?
有用
有用
无用
无用