在Windows 7上使用Eclipse调试Genymotion

4
我已经使用Genymotion Android模拟器两周了。到目前为止一切都很好,我能够进行调试而且一切正常(速度也相当快)。
但昨天突然调试器开始出问题:它跳过某些代码行,不执行某些方法,显示“obj”实例不为null(在鼠标移动到它上面时),但不执行随后的“if (obj != null)”代码块等等。
是否有任何解决方案?
事实上,我认为标准的Android模拟器也是这样的。这也是从昨天开始的。所以,我现在只是困惑着如何修复这个奇怪的问题并继续正常工作。
不用说,我在Eclipse中多次清理和重建了我的项目。也重启了我的计算机。目前仍然没有帮助。

我甚至在Genymotion中重新创建了我的虚拟设备,希望这样可以清除一些旧的/缓存的应用程序副本,并将真正的代码部署到设备上。但是这种尝试也没有成功。此外,调试器不断显示变量的(我认为是所有)值为“评估期间出错”。 - peter.petrov
@PaulRatazzi 我还没有尝试过那个。 - peter.petrov
你尝试过进行一次干净的构建,并使用“-clean”参数启动Eclipse吗? - Elliott Frisch
@ElliottFrisch 是的,昨天我也尝试了那个方法(在网上找到的)。今天我刚刚下载并安装了全新的Eclipse。我几乎确定这会有所帮助,但是没有。没有运气。 - peter.petrov
@peter.petrov,几乎总是意味着你实际运行的应用程序与IDE中的代码实际上并不匹配。你尝试删除bingen内容,清理所有项目,并从设备中卸载应用程序了吗? - matiash
显示剩余19条评论
2个回答

3

我不能确定这是否是问题,但当我有一个具有相同泛型类型名称但不同签名的两个方法的接口时,我经历过奇怪的调试行为,例如:

public <T extends Something1> void method1(T t){...}

public <T extends Something2> void method2(T t){...}

我遇到的问题是:
  • 我无法评估任何表达式。
  • 只能运行,不能逐步执行或跳过...直到下一个断点。
  • 我确定还有其他问题,但由于我只是想完成任务,所以忽略了它们 :|

由于某种原因,这在Eclipse中是已知问题,并且在过去几年中一直未得到解决...

因此,真正的解决方案实际上是将一个(或两个)通用参数名称重命名为so:

public <T1 extends Something1> void method1(T1 t){...}

public <T2 extends Something2> void method2(T2 t){...}

令人惊讶的是,这个解决方案解决了一个长时间困扰我的错误!

我希望这就是问题所在 :)


我认为这并不完全是我的问题,因为我没有任何通用方法。事实上,我只有一个视图和一个活动。尽管它可能并不完全符合我的情况或问题,但我仍然给予+1的支持,因为你试图帮助我并指出了一些有意义的线索。 - peter.petrov

1

这可能与模拟器无关, 因为标准模拟器也不能正常工作。

这可能是源代码和编译结果之间的某种不同步, 所以调试器开始表现得很疯狂。

我曾经遇到过这个问题, 解决方法与选项将行号属性添加到生成的类文件中(由调试器使用)有关。

要查找该选项: 1-右键单击您遇到问题的项目

2-选择属性

3-从左侧窗格中选择Java编译器

4-在右侧窗格的下部,类文件生成下:

这里可能有两种情况:

1-未选中该选项,只需选中它,点击应用,然后进行清除构建

2-如果选中了该选项,则取消选中它,点击应用,关闭对话框,清理项目,然后构建。 然后重新打开对话框并导航到该选项,选中它,点击应用,然后关闭对话框, 清理项目并构建。

注意:在进行此操作时,最好从“Window”菜单中取消选择“自动构建”选项,然后在完成上述步骤后重新启用它。祝你好运。

谢谢你的帮助,但我已经尝试了,没有帮助。 - peter.petrov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接