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

问题描述:

请注意,与题目为“应用程序意外停止”的许多其他问题不同,我并不要求解决特定问题。我正在要求提供Android/Eclipse/Java新手的最佳策略大纲,以处理这种消化大量信息的艰巨任务,以便开发(和调试)简单的Android应用程序。应用程序意外停止:如何调试?

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

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

好吧,所以我知道我必须看看LogCat。这是充满时间戳的线路盯着我...我现在做什么?我需要寻找什么?

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

如何放置断点?

你能推荐一个Android调试教程在线,除了this one

+1

将您的logcat输出中的行复制粘贴到问题中,以便人们可以帮助您指出正确的方向。一般来说,查找“Exception”一词以及一个调用堆栈或任何对应用程序的引用。 – 2011-02-23 23:13:16

+0

@ typo.pl谢谢,当我知道我在做什么时,我一定会这样做。然而,在这一点上,我只对@HappyCodeMonkey和@jqpubliq建议的方法感兴趣。 – 2011-02-23 23:29:26

+1

我给你的方法 - “logcat输出 - 寻找单词”例外“和一个调用堆栈或任何对你的应用程序的引用”。不要浪费时间在调试器中启用/禁用断点时,Android已经告诉您应用程序中存在大问题 - Exception和callstack是吸烟枪。 – 2011-02-24 00:12:51

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

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

至于其他好的教程,我正在寻找一些我自己,但没有设法找到任何宝石呢。

+0

这是一个很好的答案。我试图右键单击我想要分解的行并选择“切换断点”,但找不到任何此类菜单项。你确定你没有把Eclipse和Visual Studio混淆吗? :) – 2011-02-23 23:32:46

+1

点击一个方法。左侧应该为该方法的范围提供蓝色突出显示。那是你点击的地方。双击是相当的 – jqpubliq 2011-02-23 23:37:03

+1

不,绝对是Eclipse ......但是,再看一遍,是否有可能点击文件编辑器本身而不是文件编辑器左侧的米色区域? (例如,这是小警告显示的区域,告诉你你需要导入一个软件包或其他东西)。如果这没有意义,我很乐意创建一个截图。 – HappyCodeMonkey 2011-02-23 23:40:45

过滤日志只是错误,并寻找致命异常

+0

这是一个很棒的提示。谢谢! (和+1 :) – 2011-02-23 23:30:18

如果您在Eclipse的'调试'透视图内部使用Logcat显示,那么这些行将用颜色编码。找到导致应用崩溃的原因很容易,因为它通常是红色的。 (或Dalvik)虚拟机不应该崩溃,但是如果你的程序抛出一个异常并且没有捕获它,虚拟机将终止你的程序,这是你所看到的'崩溃'。

+0

+1。每个提示都很重要:) – 2011-02-23 23:35:32

检查是否您的应用程序有需要permissions.I也得到同样的错误,我查了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,其表现为我工作。

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

这将无助于调​​试应用程序的问题。这可能是一个解决问题的方法,但这对确定发生了什么问题没有帮助。 – qqx 2012-11-25 01:22:32

+0

问题要求调试策略,不一定要摆脱错误 – 2014-06-06 02:47:13