9

我正在尝试在模拟器或设备上调试一个简单的 Android 应用程序,但我无法让调试器在我设置的任何断点处停止。我在这里和整个网络上合并了其他帖子并尝试了所有建议(将 debuggable:"true" 添加到清单中,停止并启动 adb,全部清除,确保我使用的是调试按钮而不是运行按钮等) . 在 Debug 透视图中,我可以看到线程,在 DDMS 中,它会在我正在调试的设备旁边显示调试图标。我确实看到了我设置断点的蓝点,并且 Debug 透视图列出了它们并说它们处于活动状态。

我已经在断点之前发出警报,以验证代码正在执行。

在这里开始发疯。还有其他建议吗?我一定错过了一些简单但不明显的东西。

更新:我很欣赏迄今为止的回应。不幸的是,他们没有解决我的问题。我已按照调试说明进行操作,并在手机中打开了调试功能。此外,我确实在启动时在手机上看到了“等待调试器”警报。一般来说,一切都说我正在调试(包括获取我添加的 logcat 输出)。它不会在我添加的断点处停止,并在 Debug 透视图的断点选项卡中列出。也只是重申一下-在设备和模拟器上进行调试时会发生这种情况。我确实注意到的一件事是,当我启动调试器时,我将其设置为调出 Android 设备选择器。在那里,我的设备的“调试”列是空白的 - 但如果模拟器正在运行,调试列会说“是”。控制台还指出正在尝试连接到调试器。是否应该有一个控制台日志表明调试器已成功连接?我没有看到这一点。

更新 20120914:我已经离开了一段时间并且之前已经放弃了。回来尝试解决这个问题。它仍然没有解决。上面的一切仍然是最新的——但我注意到了另一件事。我在主要活动上设置了一个类加载断点,它确实停在那里。它只是不会在任何断点处停止。我刚刚更新到最新的JDK 1.7.0_07、Android SDK 20、ADT Plugin 20.0.3。我已经使用 logcat 输出了一条消息并在这一行设置了一个断点。我在 logcat 中看到了消息,所以我知道代码正在执行。debig 透视图中的调试窗口也确实显示了带有许多线程的 android 应用程序,而 DDMS 透视图中的 Devices 窗口显示了旁边带有绿色错误图标的应用程序。

还有一件事 - 当调试器运行行断点项目符号时,不会在它们上面覆盖复选标记(类加载断点会!)。我猜这是根本原因——但我不知道他们为什么没有得到这个。(顺便说一下,也没有设置跳过断点 - 断点没有穿过它们的线)。

任何新的建议将不胜感激。我在这件事上花了很多时间。这一定是我没有看到的明显的东西。

4

6 回答 6

5

现在我觉得写这篇文章有点愚蠢。但我终于解决了我的问题。问题是您不能在 Javascript 代码中设置断点。我无意中遗漏的部分是我正在使用 PhoneGap 为 Android 编写应用程序。几乎所有的代码都是 Javascript。我非常习惯在 Visual Studio 中开发 .NET Web 应用程序,我只是假设您可以在 javascript 代码中设置断点。Java 代码中的断点恰好可以正常工作。无论如何,感谢您的任何建议。不知道是否有其他 .NET 开发人员在尝试 PhoneGap 开发 - 但也许这篇文章会对他们有所帮助。

于 2012-09-14T23:59:54.147 回答
3

Android SDK 提供了调试应用程序所需的大部分工具。此链接将向您介绍Android 调试环境和使用的调试工具

这也是调试 android 应用程序的动手教程

如果您想使用实际的 android 手机进行调试,请在您的设备中打开“ USB 调试”:

设置 > 应用程序 > 开发并启用 USB 调试

安卓 4.0:

设置 > 开发者选项

并利用Log.d和你的Logcat.

于 2012-06-01T00:50:40.533 回答
1

Eclipse 有一个调试运行配置。仅当您使用调试运行配置时,才会在启动期间将调试器附加到应用程序中。

应用程序启动(在设备/模拟器上)是否会暂停一段时间“等待调试器”?如果不是,那么您没有使用“调试配置”启动应用程序。它是运行(下拉)配置左侧的按钮。

于 2012-06-01T02:23:23.083 回答
1

尝试使用 jsHybugger:http ://www.jshybugger.org/在 Eclipse 中为远程(移动)设备设置 javascript 断点。

它允许您设置断点、单步执行、捕获异常以及与 JS/DOM 环境交互。您可以从 Eclipse 或远程桌面上的 Chrome 或与 Chrome 兼容的调试器中使用它。它可以与创建自己的 webView 的应用程序一起使用。

但是,您必须安装一些文件——但使用起来可能并不比 weinre 复杂。它确实广泛地修改了 JS 文件(动态地,对用户透明)以启用所有这些调试——webKit 确实应该原生支持 javascript 调试。

于 2013-05-26T13:39:25.277 回答
0

确保您没有检查跳过所有断点(运行 -> 跳过所有断点)。

于 2014-01-07T09:24:34.480 回答
0

Ribo 已经在他的回答中提到了它,但是因为这个问题和答案是关于调试 Phonegap 应用程序的。你当然要看看 weinre (WEB INspector REmote)。 http://people.apache.org/~pmuellr/weinre/docs/latest/

如今,phonegap 甚至在 phonegap 构建中也包含了自己的风格... http://debug.phonegap.com/

我是这个的忠实粉丝......(请注意,如果您在本地机器上使用 weinre 并尝试通过 wifi 调试 phonegap 应用程序......请确保您的本地设备在同一个 wifi 网络上!)

于 2014-02-10T10:21:09.203 回答