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

时间:2011-02-23 23:03:12

标签: android debugging android-emulator adb logcat

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

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

在我的情况下,我从SDK中获取了样本骨架应用程序,将其修改为略微,当我尝试运行它时,我得到了什么?

  

申请   (process.com.example.android.skeletonapp)   意外地停了下来。请试试   试。

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

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

如何设置断点?

除了this one之外,您能否在线推荐Android调试教程

5 个答案:

答案 0 :(得分:16)

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

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

至于其他好的教程,我自己也在搜索一些,但还没找到任何宝石。

答案 1 :(得分:9)

将您的日志过滤为仅错误并查找致命异常

答案 2 :(得分:4)

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

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

答案 3 :(得分: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中提供了所需的权限,这对我有用。

答案 4 :(得分:-2)

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