应用程序意外停止:如何调试?

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

相反,我要求概述Android / Eclipse / Java新手的最佳策略,以解决消化大量信息以开发(和调试!)简单Android应用程序的这项艰巨任务。

在我的例子中,我从SDK中获取了示例骨架应用程序, 稍微修改了一下,当我尝试运行它时,我得到了什么?

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

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

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

我该如何设置断点?

您能否在线推荐Android调试教程 , 除此之外 ?

Solutions Collecting From Web of "应用程序意外停止:如何调试?"

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

通过右键单击要中断的行旁边的并选择“切换断点”,可以在Eclipse中设置断点。 从那里你将要选择“调试”而不是标准的“运行”,这将允许您单步执行,依此类推。 使用LogCat提供的filter(在教程中引用),这样您就可以定位所需的消息,而不是涉及所有输出。 这将(希望)在帮助您理解错误方面发挥很大作用。

至于其他好的教程,我自己也在搜索一些,但是还没find任何gem。

将您的日志过滤为只是错误并查找致命exception

如果在Eclipse中的“debug”透视图中使用Logcat显示,则行将采用颜色编码。 很容易find导致应用崩溃的原因,因为它通常是红色的。

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

检查你的应用程序是否具有所需的权限。我也得到了同样的错误,我检查了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中给了我所需的权限。

  1. 在主屏幕中,按菜单键。
  2. 项目清单
  3. 触摸设置。
  4. 触摸应用程序
  5. 触摸管理应用。
  6. 触摸全部。
  7. 选择有问题的应用程序。
  8. 触摸清除数据并清除缓存(如果可用)。 这会将应用程序重置为新内容,并可能会删除应用中存储的个人数据。