Android:如何获取完整的异常堆栈跟踪?

时间:2018-10-27 14:37:48

标签: android exception exception-handling logcat

我正在使用 fabric crashlytics 来跟踪应用程序中的异常。在某些情况下,异常日志不够详细,当我在测试期间尝试重新生成相同的异常时,我发现Logcat上提供的日志更加全面和翔实。

我也使用了this answer中提供的方法,但是它会导致简短的异常信息,例如提交给结构的异常信息。问题是如何生成与 Logcat 提供的详细信息相同的详细信息?

提交给结构的异常详细信息:

android.app.RemoteServiceException: Bad notification posted from package com.myapp: Couldn't expand RemoteViews for: StatusBarNotification(pkg=com.myapp user=UserHandle{0} id=1564 tag=null score=0: Notification(pri=0 contentView=com.myapp/0x7f0b0066 vibrate=null sound=null defaults=0x0 flags=0x72 kind=[null]))
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        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:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)

Logcat窗口上显示的异常详细信息(功能更全面,会导致我的应用程序中真正的错误源):

android.view.InflateException: Binary XML file line #32: Error inflating class android.widget.ImageButton
    at android.view.LayoutInflater.createView(LayoutInflater.java:621)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    at android.widget.RemoteViews.apply(RemoteViews.java:2415)
    at com.android.systemui.statusbar.BaseStatusBar.inflateViews(BaseStatusBar.java:664)
    at com.android.systemui.statusbar.BaseStatusBar.createNotificationViews(BaseStatusBar.java:835)
    at com.android.systemui.statusbar.phone.PhoneStatusBar.addNotification(PhoneStatusBar.java:906)
    at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:267)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5017)
    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:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.constructNative(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at android.view.LayoutInflater.createView(LayoutInflater.java:595)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
    at android.widget.RemoteViews.apply(RemoteViews.java:2415) 
    at com.android.systemui.statusbar.BaseStatusBar.inflateViews(BaseStatusBar.java:664) 
    at com.android.systemui.statusbar.BaseStatusBar.createNotificationViews(BaseStatusBar.java:835) 
    at com.android.systemui.statusbar.phone.PhoneStatusBar.addNotification(PhoneStatusBar.java:906) 
    at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:267) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    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:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/playlistcore_ic_clear_white_old.xml from drawable resource ID #0x7f0700d5
    at android.content.res.Resources.loadDrawable(Resources.java:2101)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
    at android.widget.ImageView.<init>(ImageView.java:129)
    at android.widget.ImageButton.<init>(ImageButton.java:87)
    at android.widget.ImageButton.<init>(ImageButton.java:83)
    at java.lang.reflect.Constructor.constructNative(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:595) 
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
    at android.widget.RemoteViews.apply(RemoteViews.java:2415) 
    at com.android.systemui.statusbar.BaseStatusBar.inflateViews(BaseStatusBar.java:664) 
    at com.android.systemui.statusbar.BaseStatusBar.createNotificationViews(BaseStatusBar.java:835) 
    at com.android.systemui.statusbar.phone.PhoneStatusBar.addNotification(PhoneStatusBar.java:906) 
    at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:267) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    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:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
 Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector
    at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
    at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
    at android.content.res.Resources.loadDrawable(Resources.java:2097)
    at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
    at android.widget.ImageView.<init>(ImageView.java:129) 
    at android.widget.ImageButton.<init>(ImageButton.java:87) 
    at android.widget.ImageButton.<init>(ImageButton.java:83) 
    at java.lang.reflect.Constructor.constructNative(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at android.view.LayoutInflater.createView(LayoutInflater.java:595) 
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:670) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:695) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:756) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
    at android.widget.RemoteViews.apply(RemoteViews.java:2415) 
    at com.android.systemui.statusbar.BaseStatusBar.inflateViews(BaseStatusBar.java:664) 
    at com.android.systemui.statusbar.BaseStatusBar.createNotificationViews(BaseStatusBar.java:835) 
    at com.android.systemui.statusbar.phone.PhoneStatusBar.addNotification(PhoneStatusBar.java:906) 
    at com.android.systemui.statusbar.CommandQueue$H.handleMessage(CommandQueue.java:267) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    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:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 

0 个答案:

没有答案