前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试发现bug,复现不出来怎么办

测试发现bug,复现不出来怎么办

原创
作者头像
FangMessi
修改2021-09-28 18:21:14
5350
修改2021-09-28 18:21:14
举报
文章被收录于专栏:码工非码码工非码

一、 背景

是否有这种情况,测试发现了个crash的bug,找到研发,但是研发复现不出来...

二、解决方案

在App Crash的时候,利用CrashHandler捕获异常,将异常信息输出在屏幕上

代码语言:txt
复制
public class CrashHandler implements Thread.UncaughtExceptionHandler {
    public static void init(Context context) {
        Thread.UncaughtExceptionHandler exceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
        if (exceptionHandler != null
                && exceptionHandler.getClass().getName().startsWith("当前类的package name")) {
            return;
        }
        Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(context));
    }

    private Context mContext;

    private CrashHandler(Context context) {
        this.mContext = context;
    }

    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
        //128kb-1
        int maxStackTraceSize = 131071;
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        ex.printStackTrace(pw);
        String stackTraceString = sw.toString();

        if (stackTraceString.length() > maxStackTraceSize) {
            String disclaimer = " [stack trace too large]";
            stackTraceString = stackTraceString.substring(0, maxStackTraceSize - disclaimer.length()) + disclaimer;
        }

        // 在另外一个进程 打开Activity
        Intent intent = new Intent(mContext.getApplicationContext(), ExceptionActivity.class);
        intent.putExtra(ExtraName.CRASH_MESSEAG, stackTraceString);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        mContext.startActivity(intent);

        android.os.Process.killProcess(android.os.Process.myPid());
        System.exit(10);
    }
}
  1. 注意点:
  2. ExceptionActivity 必须在另外一个进程,在manifest里设置即可

三、结语

  1. 赠人玫瑰手留余香
  2. 如果对您有帮助,请点赞支持我~~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 背景
  • 二、解决方案
  • 三、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com