Android Studio - 如何调试这种情况?

Android Studio - how to debug this situation?

前言

我正在维护我从另一个团队继承的应用程序

场景

我理解 ClassCastException 但我一直找不到代码中出现此错误的位置。

01-27 14:47:15.839 13272-13272/com.xx.android E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.xx.android, PID: 13272
 java.lang.ClassCastException: com.xx.viewmodels.components.AutoValue_SpecialViewModel cannot be cast to com.xx.viewmodels.components.NormalViewModel
     at com.xx.android.viewholders.NormalViewHolder.bind(NormalViewHolder.java:27)
     at com.xx.android.BaseAdapter.onBindViewHolder(BaseAdapter.java:39)
     at com.xx.android.componentfeed.ComponentFeedAdapter.onBindViewHolder(ComponentFeedAdapter.java:123)
     at com.xx.android.componentfeed.ComponentFeedAdapter.onBindViewHolder(ComponentFeedAdapter.java:79)
     at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6541)
     at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5484)
     at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5750)
     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5589)
     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5585)
     at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2231)
     at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1558)
     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1518)
     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:610)
     at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3719)
     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3436)
     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3988)
     at android.view.View.layout(View.java:17938)
     at android.view.ViewGroup.layout(ViewGroup.java:5814)
     at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:611)
     at android.view.View.layout(View.java:17938)
     at android.view.ViewGroup.layout(ViewGroup.java:5814)
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1742)
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
     at android.view.View.layout(View.java:17938)
     at android.view.ViewGroup.layout(ViewGroup.java:5814)
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1742)
     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1731)
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1496)
     at android.view.View.layout(View.java:17938)
     at android.view.ViewGroup.layout(ViewGroup.java:5814)
     at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:132)
     at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
     at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
     at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:874)
     at android.view.View.layout(View.java:17938)
     at android.view.ViewGroup.layout(ViewGroup.java:5814)
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:344)
     at android.widget.FrameLayout.onLayout(FrameLayout.java:281)
     at android.view.View.layout(View.java:17938)
     at android.view.ViewGroup.layout(ViewGroup.java:5814)
     at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1171)
     at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:856)
     at android.support.design.widget.ViewOffsetBehavior.layoutChild(ViewOffsetBehavior.java:63)
     at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:136)
     at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
     at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1361)
     at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:874)
    at andro

(我不确定为什么此时输出截止)

NormalViewHolder.java

第 27 行

public class NormalViewHolder extends ComponentViewHolder<NormalViewModel> {

第 55-64 行

public NormalViewHolder(final View itemView, final RecyclerView.RecycledViewPool relatedItemsViewPool) {
    super(itemView);
    Dagger.getInstance(itemView.getContext()).inject(this);
    ButterKnife.bind(this, itemView);

    adapter = new NormalRelatedItemsAdapter();
    recyclerView.setRecycledViewPool(relatedItemsViewPool);
    recyclerView.setAdapter(adapter);
    recyclerView.setNestedScrollingEnabled(false);
}

问题

即使使用下面屏幕截图中的设置,该应用程序也会突然停止。我已经在 bindonBindViewHolder 周围设置了断点,并一直跟踪它们,但无济于事。我该如何着手追踪这个问题?我在想我可以在断点处四处移动以将东西放在一起,但我没有任何运气..建议?

额外

在研究这个问题时,我将我的断点设置调整为以下但没有成功:

这是无法调试的情况。

此应用是为利用 Dagger 模块而编写的。在应用程序中有一行引用了不兼容的 class 但在堆栈跟踪中甚至从未提及的文件中 - 使我的调试方法变得毫无用处。

最终我不得不逐行检查,手动检查每一种情况。很好的老式肘部润滑脂。