Giter VIP home page Giter VIP logo

cockroach's People

Contributors

android-notes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cockroach's Issues

程序卡死,无响应

我在fragment中添加了一个控件,没有对这个控件进行findViewById操作,然后设置他的点击事件,运行后启动程序就卡死半天无响应结束了,该怎么做呢,我在mainAcitivty中进行安装和卸载

原理和用法已经大致正确了解了,现在有个新的疑惑。

其实这个库并不能帮你解决程序中的逻辑错误,它只是当你出现异常的时候让你的app进程不会崩,可以减少crash的次数,增加用户体验和留存率而已。
但是异常发生时,异常后面的代码都不会被执行到,程序的逻辑会到异常处为止,接下来的逻辑是程序把异常一层一层往上抛,如果抛到最后还没有被处理掉,那么app就会crash。
这个框架就是在异常被抛到最上层的时候把它处理掉了,仅此而已。

不过有个新的疑惑,Cockroach在安装时,手动调用了Looper.loop(),那ActivityThread的main方法中调用的那个Looper.loop()还会被执行吗?loop()方法中是一个死循环,那这样会有两个死循环同时在跑吗?

接入第三方crash监控sdk 有无测试过?

有些第三方crash监控,例如腾讯的BUGLY,如果实现原理 也是设置了Thread.setDefaultUncaughtExceptionHandler,那么Cockroach可能让这些监控完全失效了,又或者是使Cockroach无法捕获子线程异常。

里面的方法都是什么意思?

> /**
 * 子线程抛出异常时始终调用该方法。主线程只有第一次抛出异常时才会调用该方法,该方法中到的throwable都会上报到bugly。以后主线程的异常只调用 {@link #onBandageExceptionHappened(Throwable)}
 *
 * @param thread
 * @param throwable
 */
protected abstract void onUncaughtExceptionHappened(Thread thread, Throwable throwable);
/**
 * 当原本导致app崩溃的主线程异常发生后,主线程再次抛出导致app崩溃异常时会调用该方法。(自己try catch住的异常不会导致app崩溃)
 * (该方法中到的throwable不会上报到bugly,也无需上报到bugly,因为本次异常可能是由于第一次主线程异常时app没有崩溃掉才发生的,只要修复了bug就不会发生该异常了)
 *
 * @param throwable 主线程的异常
 */
protected abstract void onBandageExceptionHappened(Throwable throwable);

方法注释写的太绕了,至今不明白这两个方法什么意思。作者在试图把简单的方法进行复杂的描述? 自带混淆属性?
有道翻译
uncaught-->未捕获
bandage-->绷带

有什么不同,应用场景是什么?为什么不是主线程对应一个方法,子线程对应一个方法。为什么两个要混用啊?
UncaughtExceptionHandler 如果是捕获子线程异常的,为什么主线程第一次抛出异常时会调用该方法?
UncaughtExceptionHandler 如果是捕获所有异常的,那就不需要 if (t == Looper.getMainLooper().getThread()) 来判断是否主线程了。 这块什么逻辑?

enterSafeMode:安全模式是做什么的,为什么要写这个模式?

我打印了ExceptionHandler接口的四个方法,同一个crash 为什么会回调多个的方法?例如,有一次同时回调了uncaughtExceptionHappened和bandageExceptionHappened?

别说我不仔细看文档和注释,别说我能力有限小白等等这些话。 我就是看不懂才问的

@android-notes

这个比较有意思

如果直接在Application里面install一次,在应用退出的时候再uninstall ,在没有uninstall之前 ,会不会影响系统原有分配给App的消息队列 ?我看是直接让MainLooper while(true)循环....

android 9.0 照样崩溃 三星s8+

在application#oncreate 初始化2.0版本,没有其他初始化代码的

Cockroach.install()

在mainActivity#onCreate手动

 throw new RuntimeException("测试测试测试测试测试测试测试测试测试测试测试测试");

APP照样崩溃

android.os.BadParcelableException ClassNotFoundException when unmarshalling: android.support.v4.app.FragmentManagerState

android.os.Parcel.readParcelableCreator(Parcel.java:2839)

2 android.os.Parcel.readParcelable(Parcel.java:2765)
3 android.os.Parcel.readValue(Parcel.java:2668)
4 android.os.Parcel.readArrayMapInternal(Parcel.java:3037)
5 android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
6 android.os.BaseBundle.unparcel(BaseBundle.java:232)
7 android.os.BaseBundle.size(BaseBundle.java:355)
8 android.app.servertransaction.LaunchActivityItem.hashCode(LaunchActivityItem.java:193)
9 java.util.AbstractList.hashCode(AbstractList.java:541)
10 java.util.Objects.hashCode(Objects.java:98)
11 android.app.servertransaction.ClientTransaction.hashCode(ClientTransaction.java:236)
12 java.lang.Object.toString(Object.java:273)
13 java.lang.String.valueOf(String.java:2896)
14 java.lang.StringBuilder.append(StringBuilder.java:132)
15 android.os.Message.toString(Message.java:529)
16 android.os.Message.toString(Message.java:500)
17 com.yunshuxie.bearword.crashsafe.g$2.handleMessage(Cockroach.java:103)
18 android.os.Handler.dispatchMessage(Handler.java:102)
19 android.os.Looper.loop(Looper.java:193)
20 android.app.ActivityThread.main(ActivityThread.java:6898)
21 java.lang.reflect.Method.invoke(Native Method)
22 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
23 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我觉得是Cockroach页面第103行Log里面使用了msg.toString引起的,故而把这个log删除了

我跳转到SecondActivity的时候,让其在oncreate发生异常后,App就黑屏了

MainActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent( MainActivity.this, SecondActivity.class);
            startActivity(intent);
        }
    });
}

SecondActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    String ing = null;
    Log.d("logggg", ing.length() + "");
    Button button = (Button) findViewById(R.id.btn);
    button.setText("hellosdfsfa");
}

这个黑屏是由于什么原因导致的呢,请教下

一处问题需要处理一下

java.lang.IllegalStateException
The specified child already has a parent. You must call removeView() on the child's parent first.
com.wanjian.cockroach.Cockroach$2.boolean handleMessage(android.os.Message)(Unknown Source:76)
报错信息是这样的

能支持Android P 吗?

目前的在Android P 以下的手机上,在activity 的生命周期报错时,都可正常拦截到,且可以正常finish 打开的activity。但是在Android P 的手机上,会黑屏。有计划修复吗?

后端控制开启和卸载,是怎么控制?

当线上发现进入某个Activity有大量crash时,若装载Cockroach后不影响APP运行,不影响用户体检,就可以通过后端控制来自动开启Cockroach,当退出这个Activity后自动卸载Cockroach。这样其他用户再次进入该Activity就不会crash。

生命周期出现异常,bugly无法上报

Cockroach放在第一个初始化(在bugly之前)在页面启动过程当中触发异常(测试用的是:Color.parseColor("534"))。会进入安全模式,onUncaughtExceptionHappened方法会调用,但是bugly无法上报,只能手动上报错误。有办法可以优化吗?

是用monkey测试时,会出现ANR问题,哪位遇到过?

native: #00 pc 000498e8 /system/lib/libc.so (__epoll_pwait+20)
native: #1 pc 0001b9e5 /system/lib/libc.so (epoll_pwait+60)
native: #2 pc 0001ba15 /system/lib/libc.so (epoll_wait+12)
native: #3 pc 00010153 /system/lib/libutils.so (android::Looper::pollInner(int)+118)
native: #4 pc 00010045 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+32)
native: #5 pc 000b2e59 /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, _jobject*, int)+24)
native: #6 pc 001a5d7d /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+92)
at android.os.MessageQueue.nativePollOnce(Native method)
at android.os.MessageQueue.next(MessageQueue.java:325)
at android.os.Looper.loop(Looper.java:142)
at com.vb.baseframe.logging.CrashLogger.lambda$start$0(CrashLogger.java:177)
at com.vb.baseframe.logging.-$$Lambda$CrashLogger$euMZFyaMBeyoncQBPcn4SPonIhg.run(lambda:-1)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6518)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

使用方法没问题,本地验证crash会防护住。但monkey时,发生anr堆栈如下。
Reason: Input dispatching timed out (Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 10. Wait queue head age: 5617.8ms.)

不想直接依赖源码的看这里

	allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}
	dependencies {
	        implementation 'com.github.SJJ-dot:Cockroach:2.0.1'
	}
  • jitpack 自动打的包
  • 2.0 直接fork的源码只修改了gradle的版本
  • 2.0.1 增加了 按键崩溃 退出,可修改需要直接崩溃的方法。

在android 4.4.4 API 19上,点击一个按钮,触发错误。然后直接anr了

02-27 18:54:25.200 6127-6127/com.tencent.bugly.demo E/InputEventSender: Exception dispatching finished signal.
02-27 18:54:25.200 6127-6127/com.tencent.bugly.demo E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
02-27 18:54:25.220 6127-6127/com.tencent.bugly.demo E/MessageQueue-JNI: java.lang.RuntimeException: This Crash create for Test! You can go to Bugly see more detail!
at com.tencent.bugly.crashreport.CrashReport.testJavaCrash(BUGLY:131)
at com.tencent.bugly.demo.MainActivityAAA.onClick(MainActivityAAA.java:65)
at android.view.View.performClick(View.java:4438)
at android.view.View.onKeyUp(View.java:8244)
at android.widget.TextView.onKeyUp(TextView.java:5652)
at android.view.KeyEvent.dispatch(KeyEvent.java:3060)
at android.view.View.dispatchKeyEvent(View.java:7668)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2143)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1526)
at android.app.Activity.dispatchKeyEvent(Activity.java:2418)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:226)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2070)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3846)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3820)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3551)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3712)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2015)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1709)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1700)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1992)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:138)
at android.os.Looper.loop(Looper.java:123)
at com.tencent.bugly.demo.Crash$1.run(Crash.java:46)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
at dalvik.system.NativeStart.main(Native M
02-27 18:54:25.230 6127-6162/com.tencent.bugly.demo E/CrashReport: Java Catch Happen
02-27 18:54:25.230 6127-6162/com.tencent.bugly.demo E/CrashReport: 3
02-27 18:54:25.330 6127-6162/com.tencent.bugly.demo E/CrashReport: stack frame :14, has cause true
02-27 18:54:25.600 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: #++++++++++Record By Bugly++++++++++#
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # You can use Bugly(http:\bugly.qq.com) to get more Crash Detail!
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # PKG NAME: com.tencent.bugly.demo
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # APP VER: 1.0
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # LAUNCH TIME: 2017-02-27 18:54:20
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # CRASH TYPE: JAVA_CATCH
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # CRASH TIME: 2017-02-27 18:54:25
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # CRASH PROCESS: com.tencent.bugly.demo
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # CRASH THREAD: main
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # REPORT ID: 1c91392b-82f4-4302-b75e-c5ae3e75418b
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # CRASH DEVICE: C42SD320 ROOTED
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # RUNTIME AVAIL RAM:246759424 ROM:822931456 SD:1063991296
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # RUNTIME TOTAL RAM:760266752 ROM:1044131840 SD:1069539328
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: # CRASH STACK:
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: com.tencent.bugly.demo.MyException: hahahaha this is MyException :This Crash create for Test! You can go to Bugly see more detail!
at com.tencent.bugly.demo.MainActivityAAA$1$1.run(MainActivityAAA.java:50)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at com.tencent.bugly.demo.Crash$1.run(Crash.java:46)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: This Crash create for Test! You can go to Bugly see more detail!
at com.tencent.bugly.crashreport.CrashReport.testJavaCrash(BUGLY:131)
at com.tencent.bugly.demo.MainActivityAAA.onClick(MainActivityAAA.java:65)
at android.view.View.performClick(View.java:4438)
at android.view.View.onKeyUp(View.java:8244)
at android.widget.TextView.onKeyUp(TextView.java:5652)
at android.view.KeyEvent.dispatch(KeyEvent.java:3060)
at android.view.View.dispatchKeyEvent(View.java:7668)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1408)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2143)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1526)
at android.app.Activity.dispatchKeyEvent(Activity.java:2418)
at android.support.v7.internal.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:50)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.dispatchKeyEvent(AppCompatDelegateImplBase.java:226)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2070)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3846)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3820)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3551)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3712)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2015)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1709)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.
02-27 18:54:25.970 6127-6162/com.tencent.bugly.demo E/CrashReport: #++++++++++++++++++++++++++++++++++++++++++#
02-27 18:54:26.180 6127-6162/com.tencent.bugly.demo E/CrashReport: not to shut down return
02-27 18:54:26.600 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:27.610 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:28.610 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:29.610 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:30.620 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:31.620 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:32.620 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:33.630 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:34.630 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:35.630 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:36.640 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:37.640 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:38.640 1556-1556/system_process E/WifiHW: get_wifi_device_num is 1
02-27 18:54:39.160 1556-1570/system_process E/ActivityManager: ANR in com.tencent.bugly.demo (com.tencent.bugly.demo/.MainActivityAAA)
PID: 6127
Reason: Input dispatching timed out (Waiting because the focused window has not finished processing the input events that were previously delivered to it.)
Load: 4.81 / 5.01 / 4.86
CPU usage from 5660ms to 0ms ago:
6.5% 1107/tvos: 3.1% user + 3.3% kernel
3.8% 1388/adbd: 0.5% user + 3.3% kernel / faults: 458 minor
1.7% 1556/system_server: 0.7% user + 1% kernel / faults: 129 minor
1.2% 2007/com.cantv.launcher: 1% user + 0.1% kernel
0.5% 1087/surfaceflinger: 0.5% user + 0% kernel
0.5% 5500/RtmpMlmeTask: 0% user + 0.5% kernel
0% 3574/com.tvezu.urc.service: 0% user + 0% kernel / faults: 2 minor
0% 1//init: 0% user + 0% kernel
0.1% 3/ksoftirqd/0: 0% user + 0.1% kernel
0% 1097/logwrapper: 0% user + 0% kernel
0.1% 1098/virtualkeypad: 0% user + 0.1% kernel
0.1% 1627/com.android.systemui: 0.1% user + 0% kernel
0% 1644/com.mstar.tv.service: 0% user + 0% kernel
0.1% 5498/RtmpTimerTask: 0% user + 0.1% kernel
0.1% 5599/logcat: 0% user + 0.1% kernel
0.1% 6124/kworker/0:2: 0% user + 0.1% kernel
9.4% TOTAL: 3% user + 4.4% kernel + 1.9% softirq
CPU usage from 2527ms to 3046ms later:
7.6% 1107/tvos: 1.9% user + 5.7% kernel
1.9% 1449/IRQThread_202: 0% user + 1.9% kernel
1.9% 1526/Picture Monitor: 0% user + 1.9% kernel
5.7% 1388/adbd: 0% user + 5.7% kernel / faults: 48 minor
1.9% 1388/adbd: 0% user + 1.9% kernel
1.9% 5593/adbd: 0% user + 1.9% kernel
5.7% 1556/system_server: 1.9% user + 3.8% kernel
5.7% 1570/ActivityManager: 0% user + 5.7% kernel
1.9% 1585/InputReader: 1.9% user + 0% kernel
1.9% 1598/HWCursorMonitor: 1.9% user + 0% kernel
1.1% 1087/surfaceflinger: 0% user + 1.1% kernel
1.1% 1296/hwcVsyncThread: 0% user + 1.1% kernel
1.3% 2007/com.cantv.launcher: 1.3% user + 0% kernel
2.7% 2007/.cantv.launcher: 2.7% user + 0% kernel
1.4% 5599/logcat: 1.4% user + 0% kernel
1.5% 6124/kworker/0:2: 0% user + 1.5% kernel
14% TOTAL: 5.7% user + 7.6% kernel + 0.9% softirq
02-27 18:54:39.620 1087-1166/? E/SurfaceFlinger: blurlayer setlayer do not need tran!
02-27 18:54:39.620 1087-1087/? E/BlurLayer: after Layer::doTransaction

关于handlerException的一点建议

handlerException里面是否可以用RxAndroid实现,这样如果有耗时操作也可以做了:

    Cockroach.install(new Cockroach.ExceptionHandler() {

        // handlerException内部建议手动try{  你的异常处理逻辑  }catch(Throwable e){ } ,以防handlerException内部再次抛出异常,导致循环调用handlerException

        @Override
        public void handlerException(final Thread thread, final Throwable throwable) {
            //开发时使用Cockroach可能不容易发现bug,所以建议开发阶段在handlerException中用Toast谈个提示框,
            Observable.just(throwable)
                .subscribeOn(Schedulers.io())
                .map(new Func1<Throwable, Throwable>() {
                    @Override public Throwable call(Throwable throwable) {
                        /**
                         * 如果有,耗时操作可以放在这里
                         */
                        return throwable;
                    }
                })
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<Throwable>() {
                    @Override public void call(Throwable throwable) {
                        try {
                            //建议使用下面方式在控制台打印异常,这样就可以在Error级别看到红色log
                            Log.e("AndroidRuntime","--->CockroachException:"+thread+"<---",throwable);
                            Toast.makeText(MyApplication.this, "Exception Happend\n" + thread + "\n" + throwable.toString(), Toast.LENGTH_SHORT).show();
                            //                        throw new RuntimeException("..."+(i++));
                        } catch (Throwable e) {
                            Log.e("AndroidRuntime","--->CockroachException:"+thread+"<---",e);
                        }
                    }
                });
        }
    });

in gradle:

compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'

华为android 10,Native crash

接入Cockroach做A/B TEST时,发现使用了Cockroach的实验组,华为android 10机型上出现了大量的Native Crash,表现为启动闪退,堆栈如下:

1 #00 pc 00441c2e /apex/com.android.runtime/lib/libart.so (MterpInvokeVirtual+277) [armeabi-v7a]
--
2 #01 pc 000dc814 /apex/com.android.runtime/lib/libart.so (mterp_op_invoke_virtual+20) [armeabi-v7a]
3 #02 pc 16678e6c <unknown>
4 java:
5 [Failed to get Java stack]

是否Free-Reflection引起呢,目前Free-Reflection已经升级到2.2.0版本,Cockroach中使用的还是1.2.0版本,今天会升级Free-Reflection再次发灰度实验。

捕获所有崩溃

你好,能否捕获所有崩溃?现在还是会有些崩溃上报到bugly,比如oom等,让bugly上的崩溃率减少。谢谢

捕获到异常之后无响应

在Activity初始化的时候就抛出一个异常直接就卡死了 。

比如这样 findViewById(R.id.tv_title).setOnClickListener(this);
这个tv_title不在setContentView(R.layout.activity_main)的activity_main里面。
就不行了。

关于自定义View的Crash Catch,小米5S,安卓8.0,没有catch住

2020-07-02 13:30:52.496 1544-3461/system_process E/ActivityTrigger: activityStartTrigger: not whiteListedcom.aiyang.android_crashx/com.aiyang.crash_catch.FourActivity/1 2020-07-02 13:30:52.498 1544-3461/system_process E/ActivityTrigger: activityResumeTrigger: not whiteListedcom.aiyang.android_crashx/com.aiyang.crash_catch.FourActivity/1 2020-07-02 13:30:52.507 1544-3471/system_process E/ActivityTrigger: activityResumeTrigger: not whiteListedcom.aiyang.android_crashx/com.aiyang.crash_catch.FourActivity/1 2020-07-02 13:30:52.664 15676-15676/com.aiyang.android_crashx E/AndroidRuntime: FATAL EXCEPTION: main Process: com.aiyang.android_crashx, PID: 15676 java.lang.RuntimeException **at com.aiyang.crash_catch.MyView.onDraw(MyView.java:29)** at android.view.View.draw(View.java:19145) at android.view.View.updateDisplayListIfDirty(View.java:18095) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4218) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4218) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4218) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4218) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4218) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.updateDisplayListIfDirty(View.java:18086) at android.view.View.draw(View.java:18873) at android.view.ViewGroup.drawChild(ViewGroup.java:4218) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4002) at android.view.View.draw(View.java:19148) at com.android.internal.policy.DecorView.draw(DecorView.java:788) at android.view.View.updateDisplayListIfDirty(View.java:18095) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:643) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:649) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:757) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3035) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2830) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2383) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1422) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6834) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029) at android.view.Choreographer.doCallbacks(Choreographer.java:841) at android.view.Choreographer.doFrame(Choreographer.java:772) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1015) at android.os.Handler.handleCallback(Handler.java:793) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:173) at android.app.ActivityThread.main(ActivityThread.java:6698) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782) 2020-07-02 13:30:52.699 1544-3461/system_process E/ActivityTrigger: activityStartTrigger: not whiteListedcom.aiyang.android_crashx/com.aiyang.crash_catch.MainActivity/1 2020-07-02 13:30:52.700 1544-3461/system_process E/ActivityTrigger: activityResumeTrigger: not whiteListedcom.aiyang.android_crashx/com.aiyang.crash_catch.MainActivity/1 2020-07-02 13:30:53.197 1544-1631/system_process E/ActivityTrigger: activityResumeTrigger: not whiteListedcom.aiyang.android_crashx/com.aiyang.crash_catch.MainActivity/1

疑惑

对于集成了腾讯bugly反馈的app也可以吗?需要做什么处理?

error信息不完善

在异常之后,我通过我通过Throwable获取到 ‘ArithmeticException: divide by zero’,请问我可以通过什么办法在异常时将错误的类信息比如'ScpDetailActivity$onViewCreated$1.onClick(ScpDetailActivity.kt:44)',从而让我传到后台,方便问题的定位

bugly无法上传

楼主有在demo集成bugly吗,我集成了bugly异常无法上传,请问如何解决?

生命周期出了Bug,捕获还是会崩溃

非生命周期出了Bug能够捕获到,没什么问题,但是在生命周期里面捕获到了问题,虽然能捕获到,但是他几秒后还是会蹦掉,没办法让他不蹦吗?

ANR_EXCEPTION

install方法里面的Looper.loop();会导致这个问题

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.