当我的Android应用无法按预期运行时,如何找出导致问题的原因?有哪些工具可用于专门调试Android应用程序?
(我正在编写本Q& A,将Android文档中多个页面的信息收集到一个地方。)
答案 0 :(得分:5)
logcat
logcat
是调试Android应用最有用的工具之一。通常一个有缺陷的应用程序会终止一条消息,指出“不幸的是,已经停止了”。要找出原因,可以使用logcat
工具获得堆栈跟踪。
logcat
也是一般调试的有用工具。 Android没有控制台,因此典型的System.out.println()
调用对打印出跟踪信息和变量值没有多大帮助。相反,您可以使用android.util.Log类(另请参阅Android文档中的Reading and Writing Logs)。此类提供输出日志消息的功能,具有5个严重级别:ERROR,WARN,INFO,DEBUG,VERBOSE。每个严重级别都有相应的方法,因此您很少明确使用这些常量。
出于调试目的,您通常会使用Log.d()
,它有两种形式:Log.d(String, String)
和Log.d(String, String, Throwable)
。第一个String
参数是一个“标记”,可以是您想要的任何内容。通常这只是记录消息的类的名称。此标记允许您使用logcat
过滤日志消息,以便您可以使用它快速轻松地查找您关注的消息。第二个String
是实际的日志消息。它可以是简单的执行跟踪,也可以是变量的值或任何其他有助于调试的输出。最后一个参数是可选的Throwable
,例如,可用于在throw...catch
语句中记录异常。
现在,一旦您在应用中记录了消息,就可以使用logcat
来查看它们。有关如何执行此操作的具体细节取决于您是使用命令行工具还是使用Eclipse和Android开发插件进行开发:
最简单的形式是运行
adb logcat
如果您只需要在应用程序抛出异常时查看堆栈跟踪,这将非常有用。如果要过滤掉某些调试消息,可以通过您使用的标记字符串和日志记录级别来执行此操作。语法是
adb logcat <tag>:<debugging level> ...
例如,如果我在调用Log.d()
时使用了标签“HelloAndroid”,我可以输入
adb logcat HelloAndroid:D *:S
(最后的*:S
会为所有其他标签静音输出。)
调试对于任何程序员来说都是一项至关重要的技能,可能比学习编写代码更重要。我希望以上提示有助于减少任何潜入Android开发的人的学习曲线。希望你能比我更快地加快速度。