1.
查看系统日志
Android DDMS (Dalvik Debug Monitor Server) 和 Android Monitor 窗口均显示系统以及任何特定应用进程产生的日志。要在 Android DDMS 工具窗口中查看系统日志,请执行以下操作:
- 按在调试模式下运行您的应用中所述启动您的应用。
- 点击 Android Monitor。
- 如果 Logcat 视图中的系统日志为空,点击 Restart。
图 2. Android DDMS 工具窗口中的系统日志。
您可以通过 Android DDMS 工具窗口访问 Android Studio 中提供的一些 DDMS 功能。如需了解有关 DDMS 的详细信息,请参阅使用 DDMS。
系统日志显示的消息来自 Android 服务以及其他 Android 应用。要过滤日志消息,只查看您感兴趣的内容,请使用 Android DDMS 窗口中的工具:
- 要只显示特定进程的日志消息,请在 Devices 视图中选择该进程,然后点击 Only Show Logcat from Selected Process。如果 Devices 视图不可用,请点击 Android DDMS 工具窗口右侧的 Restore Devices View。只有在您隐藏了 Devices 窗口时才会出现该按钮。
- 要按日志级别过滤日志消息,请从 Android DDMS 窗口顶部的 Log Level 下拉列表中选择一个级别。
- 要只显示包含特定字符串的日志消息,请在搜索框中输入字符串,然后按 Enter。
2.
使用断点
Android Studio 支持使用若干类型的断点来触发不同的调试操作。最常见的类型是在指定代码行暂停应用执行的行断点。暂停时,您可以检查变量,对表达式求值,然后继续逐行执行,以确定运行时错误的原因。
要添加行断点,请按如下所述操作:
- 找到您想暂停执行的代码行,然后点击该代码行的左侧空白处,或将光标置于代码行上,然后按 Ctrl+F8(在 Mac 上,按 Command+F8)。
- 如果您的应用已处于运行状态,您不必更新应用便可添加断点 - 只需点击 Attach debugger to Android proccess。否则,请点击 Debug 开始调试。
图 3. 当您设置断点时,代码行旁会出现一个红点。
当您的代码执行到达该断点时,Android Studio 会暂停应用的执行。您可以随后使用 Debugger 标签中的工具来确定应用的状态:
- 要检查变量的对象树,请在 Variables 视图中将其展开。如果 Variables 视图不可见,点击 Restore Variables View
- 。
- 要在当前执行点对某个表达式求值,点击 Evaluate Expression
- 。
- 要前进到下一行代码(而不进入方法),点击 Step Over
- 。
- 要前进到方法调用内的第一行,点击 Step Into
- 。
- 要前进到当前方法之外的下一行,点击 Step Out
- 。
- 要让应用继续正常运行,点击 Resume Program
- 。
3.
查看和配置断点
要查看所有断点和配置断点设置,请点击 Debug 窗口左侧的 View Breakpoints
。出现 Breakpoints 窗口,如图 5 所示。
图 5. Breakpoints 窗口列出了全部现有断点并包括每个断点的行为设置。
您可以通过 Breakpoints 窗口左侧的列表启用或停用每个断点。如果停用了某个断点,Android Studio 不会在应用遇到该断点时将其暂停。从列表中选择断点可配置其设置。您可以将断点配置为初始处于停用状态,让系统在遇到其他断点时将其启用。您还可以配置在遇到断点后是否应将其停用。要为任何异常设置断点,请在断点列表中选择 Exception Breakpoints。
4.
设置日志级别
您可以设置日志级别,以控制 logcat 监视器中显示的消息数量。您可以显示所有消息,也可以仅显示指示最严重状态的消息。
请记住,无论日志级别设置如何,logcat 监视器都会继续收集所有消息。此设置仅决定 logcat 监视器的显示内容。
要设置日志级别,请执行以下操作:
- 在 Log level 菜单中,选择以下值之一:
- Verbose - 显示所有日志消息(默认值)。
- Debug - 显示仅在开发期间有用的调试日志消息,以及此列表中较低的消息级别。
- Info - 显示常规使用的预计日志消息,以及此列表中较低的消息级别。
- Warn - 显示尚不是错误的潜在问题,以及此列表中较低的消息级别。
- Error - 显示已经引发错误的问题,以及此列表中较低的消息级别。
- Assert - 显示开发者预计绝不会发生的问题。
搜索 logcat 消息
要搜索 logcat 监视器中当前显示的消息,请执行以下操作:
logcat 监视器将相应地显示更改。
- (可选)如果您想要使用正则表达式搜索模式,请选择 Regex。
- 在搜索字段中键入字符序列
- 按 Enter 键以在此会话期间将搜索字符串保存到菜单中。
- 要重复搜索,请从搜索菜单中选择。根据需要选择或取消选择 Regex(不建议使用此设置)。
过滤 logcat 消息
一种将日志输出减少至可管理水平的方式是,使用过滤器进行限制。
注:过滤器的应用范围为整个 logcat 历史记录,而不仅仅是 logcat 监视器中当前显示的消息。确保对其他显示选项进行相应设置,以便您能够看到想要检查的过滤器输出。
要定义并应用过滤器,请执行以下操作:
如果您认为没有看到想要检查的日志消息,请尝试选择 No filters 并搜索特定日志消息。
- 在过滤器菜单中,选择一个过滤选项:
- Show only selected application - 仅显示通过应用代码生成的消息(默认选项)。logcat 监视器将使用活动应用的 PID 过滤日志消息。
- No Filters - 不应用过滤器。无论您选择哪个进程,logcat 监视器都会显示设备中的所有日志消息。
- Edit Filter Configuration - 创建或修改自定义过滤器。例如,您可以创建一个过滤器,以同时查看两个应用中的日志消息。
定义过滤器后,您还可以在菜单中选择它们。要从菜单中移除过滤器,请删除过滤器。
- 如果您选择了 Edit Filter Configuration,请创建或修改过滤器。 要移除过滤器,请在左侧面板中将其选中,然后点击 -。
- 在 Create New Logcat Filter 对话框中指定过滤器参数:
- Filter Name - 键入您想要定义的过滤器的名称,或者从左侧面板中选择一个以修改现有过滤器。名称只能包含小写字符、下划线和数字。
- Log Tag -(可选)指定标记。如需了解详细信息,请参阅 logcat 消息格式。
- Log Message -(可选)指定日志消息文本。如需了解详细信息,请参阅 logcat 消息格式。
- Package Name -(可选)指定软件包名称。如需了解详细信息,请参阅 logcat 消息格式。
- PID -(可选)指定进程 ID。如需了解详细信息,请参阅 logcat 消息格式。
- Log Level -(可选)选择日志级别。如需了解详细信息,请参阅设置日志级别。
- Regex - 选择此选项可以为相关参数使用正则表达式。
- 点击 +,将过滤器定义添加到左侧面板中。
- 完成后,点击 OK。如果您点击 Cancel,任何过滤器添加或修改操作都会丢失。
- 确保您能看到想要检查的日志消息。
配置 logcat 标题显示
要自定义标题显示以仅显示感兴趣的信息,请执行以下操作:
- 选择“Use Soft Wraps” 以查看整个消息,并防止其从右侧边缘消失。
- 点击“Configure Logcat Header” 以指定想要显示或隐藏的消息的元素,然后点击 OK。
如需了解有关消息元素的详细信息,请参阅 logcat 消息格式。
上下移动堆叠跟踪
在应用引发异常时,消息将包含方法调用的堆栈追踪。logcat 监视器让您可以在日志中快速定位堆栈追踪,并在代码编辑器中查看关联代码。如果需要(和可能),逆编译程序将派生您可以查看的源代码。
要上下移动堆栈追踪并在代码编辑器中查看关联代码,请执行以下操作:
- 点击“Up the Stack Trace” 可以移动到日志中相对于当前位置的前一个方法。
- 点击“Down the Stack Trace” 可以移动到日志中相对于当前位置的下一个方法。
移动到日志结尾
点击特定消息将停止显示消息。
要快速移动到日志结尾以查看实时消息流,请执行以下操作:
- 点击“Scroll to the End”
- 按 End 键。
- 滚动或按 Page Down 键,直至结尾。
打印和写入文件
要保留日志信息,您可以将日志发送到打印机,将日志写入 PDF 文件,或者将日志复制并粘贴到文本文件中。
要打印日志或将其写入 PDF 文件,请执行以下操作:
您可以设置参数,以将日志发送到打印机或将其写入 PDF 文件。
- 点击“Print”
- 在 Android Studio 的 Print 对话框中,可以选择更改打印参数,然后点击 Print。
- 在操作系统的 Print 对话框中,可以选择更改打印参数,然后点击 Print。
要将日志复制到文本文件,请执行以下操作:
按 Ctrl+A (⌘A) 全选。
- 在 logcat 监视器中,请选择然后复制日志文本。
- 打开文本编辑器并将文本粘贴到文件中。
清除和重启日志
要清除(刷新)整个日志,请执行以下操作:
- 点击“Clear logcat”
如果存在问题并且日志不再记录,您可以重启日志:
- 点击“Restart”
向您的代码添加日志消息
您可以通过 Log
类创建在 logcat 监视器中显示的日志消息。一般来说,您应使用以下日志方法,这些方法按照优先级从高到低(或者从最简略到最详细)的顺序列示:
-
Log.e(String, String)
(错误) -
Log.w(String, String)
(警告) -
Log.i(String, String)
(信息) -
Log.d(String, String)
(调试) -
Log.v(String, String)
(详细)
请参阅 Log
类说明,查看更完整的选项列表。
除开发期间外,其他任何时候都绝不应将详细日志编译到您的应用中。调试日志虽然会编译,但会在运行时去掉,而错误、警告和信息日志会始终保留。
对于每种日志方法,第一个参数都应是唯一标记,第二个参数是消息。系统日志消息的标记是一个简短的字符串,其表示消息所源自的系统组件(例如,ActivityManager)。您的标记可以是您认为有用的任意字符串,例如当前类的名称。
一种比较好的做法是,在要用于第一个参数的类中声明 TAG
常量。例如,您可以按照以下步骤创建一条信息日志消息:
private static final String TAG = "MyActivity"; ... Log.i(TAG, "MyClass.getView() — get item number " + position);
注:长度大于 23 个字符的标记名称在 logcat 输出中会被截断。