Android studio 在颤振错误日志中,如何找到日志中命名的对象?

Android studio 在颤振错误日志中,如何找到日志中命名的对象?,android-studio,flutter,Android Studio,Flutter,感谢您考虑这个问题。它快把我逼疯了。 在开始回答之前,请仔细阅读我的问题。这可能不是你所期望的 这个问题不需要一个代码示例,所以我没有包含一个。这是关于如何垂直颤振内部以定位内部对象 具体地说,我想学习如何在运行的flatter程序中定位一个失效的渲染对象,该程序在错误日志中按名称引用 我的问题不是正确使用定位的小部件,所以专门针对它们的回答可能不会有用;用例恰好是在定位小部件方面 用例。 我正在开发flatter代码,它提供了一个堆栈小部件,封装了许多临时定位的小部件 定位的小部件可以非常快速

感谢您考虑这个问题。它快把我逼疯了。

在开始回答之前,请仔细阅读我的问题。这可能不是你所期望的

这个问题不需要一个代码示例,所以我没有包含一个。这是关于如何垂直颤振内部以定位内部对象

具体地说,我想学习如何在运行的flatter程序中定位一个失效的渲染对象,该程序在错误日志中按名称引用

我的问题不是正确使用定位的小部件,所以专门针对它们的回答可能不会有用;用例恰好是在定位小部件方面

用例。

我正在开发flatter代码,它提供了一个堆栈小部件,封装了许多临时定位的小部件

定位的小部件可以非常快速地在堆栈中交换

由于定位的小部件本身包装了其他更改的小部件,因此我将宿主小部件的setState()方法传递给一个生成器函数,该函数返回定位的小部件

当定位小部件更新其内部状态时,子部件调用传入的setState(),以通知父小部件它需要重建

几乎所有的时候这都很有效。除非它没有

有时,颤振会抛出如下错误:

════════ Exception caught by widgets library 
═══════════════════════════════════════════════════════
setState() called after dispose(): _TowerWidgetState#c7453(lifecycle state: defunct, not mounted)
我知道发生了什么,但是我很难找到错误调用setState()的对象

很明显,我正在将一个定位的小部件从渲染树中分离出来,然后渲染树调用我最初传递给它的setState()函数,并生成一条错误消息,如上图所示

我在这里的挫折是我找不到有故障的小部件

最后,问题是:

给定对某个颤振对象的引用(在本例中为_TowerWidgetState 35; c7453),如何使用调试器定位该对象,因为它显然不再位于小部件树中了

为了帮助人们确定答案,我正在使用Android Studio开发代码

你已经试过什么了,科特?

所有这些我都试过了,但都没有成功:

  • 在命名代码行上设置断点
  • 调整断点以命中调试对话框中列出的每个异常类型
我已经试过了

  • 省道例外
  • Java异常
  • 有例外吗
我甚至设置了几十个断点来记录代码路径,希望能够接近错误代码

Flatter报告错误被捕获,命名有问题的对象并继续运行。我想在表演中抓住它,这让我非常沮丧

任何发现和修复这一难以捉摸的错误的策略都将受到赞赏


我很乐意提供有助于回答这个问题的任何细节。

关于实际的“bug”,结果证明“animationController.forward().orCancel()”是罪魁祸首。在Android构建中,“orCancel()”将使框架抛出错误。这在iOS上不会发生。我刚刚删除了“.orCancel()”。然而,我的问题仍然没有得到回答至于实际的“bug”,结果是“animationController.forward().orCancel()”是罪魁祸首。在Android构建中,“orCancel()”将使框架抛出错误。这在iOS上不会发生。我刚刚删除了“.orCancel()”。然而,我的问题仍然没有得到回答