24

请注意,与主题标题为“应用程序已意外停止”的许多其他问题不同,我并不是要求对特定问题进行故障排除。

相反,我希望为 Android/Eclipse/Java 新手提供一个最佳策略大纲,以解决消化大量信息以开发(和调试!)一个简单的 Android 应用程序的艰巨任务。

就我而言,我从 SDK 中获取了示例骨架应用程序,稍微修改了它,我在尝试运行它的那一刻得到了什么?

应用程序 (process.com.example.android.skeletonapp) 已意外停止。请再试一次。

好的,所以我知道我必须查看 LogCat。它充满了带时间戳的线条盯着我……我现在该怎么办?我需要寻找什么?

有没有办法单步执行程序,找到导致应用程序崩溃的语句?(我认为Java程序永远不会崩溃,但显然我错了)

如何放置断点?

除了这个,你能推荐一个在线的 Android 调试教程吗?

4

5 回答 5

16

我也是 Eclipse/Android 初学者,但希望我的简单调试过程可以帮助...

您可以在 Eclipse 中设置断点,方法是右键单击要中断的行旁边并选择“Toggle Breakpoint”。从那里您将要选择“调试”而不是标准的“运行”,这将允许您逐步完成等等。使用 LogCat 提供的过滤器(在您的教程中引用),这样您就可以定位您想要的消息,而不是费力地浏览所有输出。这将(希望)在帮助您理解错误方面大有帮助。

至于其他好的教程,我自己也在四处寻找,但还没有找到任何宝石。

于 2011-02-23T23:23:29.770 回答
9

将您的日志过滤为仅 Error 并查找 FATAL EXCEPTION

于 2011-02-23T23:14:18.377 回答
4

如果您在 Eclipse 的“调试”透视图中使用 Logcat 显示,则这些行是彩色编码的。很容易找到导致您的应用程序崩溃的原因,因为它通常是红色的。

Java(或 Dalvik)虚拟机永远不会崩溃,但是如果您的程序抛出异常并且没有捕获它,VM 将终止您的程序,这就是您所看到的“崩溃”。

于 2011-02-23T23:32:38.400 回答
0

检查您的应用程序是否具有所需的权限。我也遇到了同样的错误,我检查了 logcat 调试日志,显示如下:

04-15 13:38:25.387: E/AndroidRuntime(694): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:555-555-5555 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires android.permission.CALL_PHONE

然后,我在对我有用的 android-manifest 中提供了所需的权限。

于 2012-04-15T08:17:04.313 回答
-2
  1. 在主屏幕中,按菜单键。
  2. 项目清单
  3. 轻触设置。
  4. 触摸应用程序。
  5. 轻触管理应用程序。
  6. 触摸全部。
  7. 选择有问题的应用程序。
  8. 如果可用,请触摸清除数据和清除缓存。这会将应用程序重置为新应用程序,并且可能会删除存储在应用程序中的个人数据。
于 2012-11-25T01:01:02.287 回答