在Eclipse上调试时无法使用F5进入功能

时间:2013-03-06 22:00:00

标签: android eclipse multithreading debugging step-into

有时(大约50%的时间),在调试Android应用程序时,为了进入一个功能,我使用F5(F6用于翻阅它)但它没有做任何事情

有时,常规调试键都不起作用(F5,F6,F7,F8,也许其他我也不知道)。

目前,解决此问题的唯一方法是从“Debug”视图中选择当前线程(显示每个线程的当前堆栈),然后按F5键。当情况更糟(例如,无法使用内容辅助)时,我重启eclipse。

说到线程,我注意到如果我有多个线程在运行,有时当我尝试更进一步时,它会转到另一个线程,这很烦人,因为我失去了对当前线程的集中。我知道它确实有道理,但它真的很烦人,特别是如果我考虑到有多个线程。

为什么会发生这些事情,我该如何解决?

注意:我有Eclipse,ADT和Android SDK的最新版本。在设备和模拟器上都会出现问题。

5 个答案:

答案 0 :(得分:4)

您无法控制线程的执行模式,因为它们不是按顺序运行,而是调试器。

我遇到了在后台运行的线程和异步操作的类似问题。

我如何管理它:

  • 我所做的是在没有线程的情况下运行相同的代码,并在确认后将其放入线程
  • 在您的帖子中使用android.os.Debug.waitForDebugger();。它会自动带你到那里并强制调试器停在这里。从那以后,你可以继续进行调试。

<强>注意事项

在启动应用程序之前不要忘记对此行进行注释,否则会导致无休止的等待,因为它也会在实际设备中进入调试模式。

此外它不是Eclipse的错,它纯粹是因为它开始在自己的环境中执行时的线程性质。 Visual Studio与线程的行为相同。

答案 1 :(得分:2)

您可能会尝试重置您的视角(以防万一您不想移动某些内容)。

这可以通过以下方式在Debug透视图中完成:

  1. 右键单击Debug Perspective(Eclipse的右上角“zone”)并选择“Reset

  2. 切换到Debug Perspective并单击菜单Window->Reset Perspective...

答案 2 :(得分:1)

  

有时,常规调试键都不起作用(F5,F6,F7,F8,也许是其他我不了解的)。

这些键都不会在调试视图以外的视图中工作。这是设计的。

  

当情况更糟(例如,无法使用内容辅助)时,我重启eclipse。

你有一个错误的eclipse安装或错误的键盘。阅读完其他评论后,我对此表示肯定。我的插件搞砸了我的eclipse安装,可以与此相关。在尝试快捷方式之前,请确保您的eclipse代码窗口具有焦点。这也可能导致问题。如果所有其他方法都失败了,请尝试移动到另一个版本的eclipse以尝试找出问题。

我有一个奇怪的错误,对于eclipse有一段时间,当我按退格键时,它会删除同一行上先前打开的文件中的字符。这是可怕的,我不得不重新安装并转移到另一个版本的日食(我不记得以前的版本是什么)。可能是你的情况类似。

  

说到线程,我注意到如果我有多个线程在运行,有时当我尝试更进一步时,它会转到另一个线程,这很烦人,因为我失去了对当前线程的集中。

我知道痛苦。不幸的是,没有办法解决它。 Eclipse在挂起线程时不考虑断点的优先级。看看这个相关的问题 - How to deprioritize Java testrunner in Eclipse breakpoints?。如果您可以设置conditional breakpoints以防止调试器移动到另一个线程,那将有所帮助。

答案 3 :(得分:0)

我找到了一个很好的线程,它解释了如何在Eclipse中完成Debug with Step Filters。可以找到该帖子here。由于显然这是日食中的一个问题,并且有更多的人遇到它,这是暂时的解决方法:

  

您可以将Eclipse Java调试器配置为不进入这些调试器   通过配置“步骤过滤器”来完成代码。

     
      
  1. 转到Windows - &gt;偏好 - &gt; Java - &gt;调试 - &gt;步骤过滤。
  2.   
  3. 选中“使用步骤过滤器”。
  4.   
  5. 检查屏幕上的相应选项。您可以添加与您自己的代码库相关的部分。
  6.   
  7. 点击“应用”。
  8.   

看看这对你有帮助。

答案 4 :(得分:0)

在我的情况下,键被分配来执行与android studio无关的操作,例如增加音量,所以我重新配置文件/ settings / keymap以重新配置什么键是什么。