应用程序意外停止:如何调试?
请注意,与题目为“应用程序意外停止”的许多其他问题不同,我并不要求解决特定问题。我正在要求提供Android/Eclipse/Java新手的最佳策略大纲,以处理这种消化大量信息的艰巨任务,以便开发(和调试)简单的Android应用程序。应用程序意外停止:如何调试?
就我而言,我从SDK中取出了示例骨架应用程序,将其稍微修改为,我试图运行它的那一刻得到了什么?
应用 (process.com.example.android.skeletonapp) 意外停止。请再次尝试 。
好吧,所以我知道我必须看看LogCat。这是充满时间戳的线路盯着我...我现在做什么?我需要寻找什么?
有没有办法让程序单步执行,找到导致应用程序崩溃的语句? (我认为Java程序永远不会崩溃,但显然我错了)
如何放置断点?
你能推荐一个Android调试教程在线,除了this one?
我是一个Eclipse/Android的初学者为好,但我希望我的简单的调试过程中可以帮助...
您可以设置在Eclipse中的断点通过右键单击要分解的行并选择“切换断点”。从那里你要选择“调试”而不是标准的“运行”,这将允许你一步一步等等。使用LogCat提供的过滤器(在您的教程中引用),以便您可以定位所需的消息,而不是涉及所有输出。这将会(希望)帮助你理解你的错误很长的路要走。
至于其他好的教程,我正在寻找一些我自己,但没有设法找到任何宝石呢。
这是一个很好的答案。我试图右键单击我想要分解的行并选择“切换断点”,但找不到任何此类菜单项。你确定你没有把Eclipse和Visual Studio混淆吗? :) – 2011-02-23 23:32:46
点击一个方法。左侧应该为该方法的范围提供蓝色突出显示。那是你点击的地方。双击是相当的 – jqpubliq 2011-02-23 23:37:03
不,绝对是Eclipse ......但是,再看一遍,是否有可能点击文件编辑器本身而不是文件编辑器左侧的米色区域? (例如,这是小警告显示的区域,告诉你你需要导入一个软件包或其他东西)。如果这没有意义,我很乐意创建一个截图。 – HappyCodeMonkey 2011-02-23 23:40:45
过滤日志只是错误,并寻找致命异常
这是一个很棒的提示。谢谢! (和+1 :) – 2011-02-23 23:30:18
如果您在Eclipse的'调试'透视图内部使用Logcat显示,那么这些行将用颜色编码。找到导致应用崩溃的原因很容易,因为它通常是红色的。 (或Dalvik)虚拟机不应该崩溃,但是如果你的程序抛出一个异常并且没有捕获它,虚拟机将终止你的程序,这是你所看到的'崩溃'。
+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,其表现为我工作。
- 在主屏幕中,按菜单键。
- 列表项
- 触摸设置。
- 触摸应用程序。
- 触摸管理应用程序。
- 全部触摸。
- 选择有问题的应用程序。
- 触摸清除数据并清除缓存(如果可用)。这会将应用重置为新的应用,并可能会删除存储在应用中的个人数据。
这将无助于调试应用程序的问题。这可能是一个解决问题的方法,但这对确定发生了什么问题没有帮助。 – qqx 2012-11-25 01:22:32
问题要求调试策略,不一定要摆脱错误 – 2014-06-06 02:47:13
将您的logcat输出中的行复制粘贴到问题中,以便人们可以帮助您指出正确的方向。一般来说,查找“Exception”一词以及一个调用堆栈或任何对应用程序的引用。 – 2011-02-23 23:13:16
@ typo.pl谢谢,当我知道我在做什么时,我一定会这样做。然而,在这一点上,我只对@HappyCodeMonkey和@jqpubliq建议的方法感兴趣。 – 2011-02-23 23:29:26
我给你的方法 - “logcat输出 - 寻找单词”例外“和一个调用堆栈或任何对你的应用程序的引用”。不要浪费时间在调试器中启用/禁用断点时,Android已经告诉您应用程序中存在大问题 - Exception和callstack是吸烟枪。 – 2011-02-24 00:12:51