Java android调试器-框架和线程之间的关系是什么?断点在不同的地方工作是否不同?

Java android调试器-框架和线程之间的关系是什么?断点在不同的地方工作是否不同?,java,android,android-debug,Java,Android,Android Debug,我被调试器弄糊涂了。它似乎暂停应用程序并显示某些断点的调试窗口,而不显示其他断点的调试窗口。它仍然会标记断点,尽管它不会暂停应用程序。当我打开调试窗口时,我没有看到任何帧,所以我无法查看变量。我看了很多文件,他们还没有解决我的问题。所以我想知道的是: 框架和线程是如何关联的 断点在应用程序的不同位置或不同类中的工作方式是否不同 由于谷歌提供的答案似乎无法回答您的问题,我将添加一个额外的解释,希望它能帮助您: 1-框架与应用程序进程直接相关,可以由应用程序使用的多个线程组成,这意味着只要应用程序

我被调试器弄糊涂了。它似乎暂停应用程序并显示某些断点的调试窗口,而不显示其他断点的调试窗口。它仍然会标记断点,尽管它不会暂停应用程序。当我打开调试窗口时,我没有看到任何帧,所以我无法查看变量。我看了很多文件,他们还没有解决我的问题。所以我想知道的是:

  • 框架和线程是如何关联的
  • 断点在应用程序的不同位置或不同类中的工作方式是否不同
    • 由于谷歌提供的答案似乎无法回答您的问题,我将添加一个额外的解释,希望它能帮助您:

      1-框架与应用程序进程直接相关,可以由应用程序使用的多个线程组成,这意味着只要应用程序进程启动并运行,框架也可用

      然而这并不意味着您可以随时查看变量,一旦调试器点击了一个断点,变量窗口框架就变得可用

      2-是的,调试器要命中断点,必须满足几个条件。这是一个很长的列表,但以下是更重要的列表:

    • 如果应用程序定义为 不可调试(如发布版本),则调试器将无法工作
    • 代码必须可读,因此可供调试器执行,这意味着经过模糊处理或篡改的代码不会导致调试器在断点处停止
    • 代码必须是可执行的,这意味着不可执行的代码(如变量声明或不可访问的代码)不会导致调试器停止

    • 注:当然,这些只是少数几个主要原因,还有很多其他原因,如instant run,可以使一段代码不可调试

      调试器停止工作的原因有很多,请您提供一个示例,其中包含一段代码和与之相关的任何日志,好吗?@keivanebati调试器不会停止工作。就像我上面写的一样。我想我还没有理解调试器的工作方式。也许在了解了以上两点后我会这么做。你研究过这个问题吗?这是一本关于调试android应用程序的非常全面的指南。@Keivanebati虽然很全面,但它没有告诉框架和线程之间的关系,也没有告诉断点的不同图标及其允许的位置。我添加了额外的解释,希望能有所帮助。4。您必须拥有已安装应用程序的源代码;i、 e.在编辑之后但在开始调试之前,请确保进行构建+安装!现在我在框架窗格中看到了线程。但是线程窗格呢?您似乎误解了变量声明不会导致调试器停止。我给一个变量设置了一个字段断点,它命中了。困惑在于它在何时何地起作用。@JimmyB我认为第二个例子涵盖了这一点,但这是一个很好的例子,说明了什么是可以调试的,什么是不能调试的t@user67265如果您指的是框架面板的功能,它将连接到显示任务日志的应用程序进程。线程面板类似于第一帧,但显示每个特定线程的事件。变量也可以命中断点,但必须是定义或赋值,声明本身不会触发它。