Android Logcat和Debug的使用

摘要:

1.使用Logcat跟踪查看Activity的生命周期。

2.使用Logcat跟踪查看Class的加载顺序。

3.使用Debug调试,跟踪代码。


内容:

1.Activity的生命周期。详情参考http://developer.android.com/guide/components/activities.html

Android Logcat和Debug的使用

2.创建一个Android工程,在MainActivity.java中加入重载的方法。

Android Logcat和Debug的使用

3.在Override/Implement Methods中选择要重写的方法,按OK就自动加入到代码。如果该方法已经被重写,则不会在该弹框中显示出来。

Android Logcat和Debug的使用

4.自动插入代码如下。在每段代码内使用Logcat方法输出内容,如果该方法被执行,将会从Logcat输出设置的内容。

Android Logcat和Debug的使用

5. 显示Logcat窗口,点击Windows->show View->Others,在弹框中找到Android->Logcat。

Android Logcat和Debug的使用

Android Logcat和Debug的使用

6. 连接上手机,运行程序。在Logcat窗口将会有log打出,有时可能没有log输出,那就把这个窗口关掉,然后再打开。输出的log信息很多,需要设置过滤。设置方法如下:

Android Logcat和Debug的使用

7. 运行程序,按Home键、按Back键,试一试log的输出,将会知道哪些方法被调用,调用过程对应Activity生命周期。

Android Logcat和Debug的使用

8.现在看一下类的加载顺序。编写如下测试代码。


9.在MainActivity中设置一个Button,按下Button调用该测试类。


10. 点击一次Button,查看输出,再点击一次,查看输出。

Android Logcat和Debug的使用

11.可以看到类加载顺序是:

  • 当使用到这个类(代码中出现该类名的时候,比如new该类或者调用该类的静态变量或者静态函数),如果这个类之前没有使用到,在加载该类,同时初始化该类的静态变量(static)。
  • 当new该类时,调用顺序为按申明定义类成员变量的顺序依次初始化,然后再初始化构造函数。如果该类还有父类,初始化成员变量和构造函数前都先初始化对应父类的成员变量和构造函数(可以打log测试一下)。
  • 当主动调用该对象的方法时(对象名.方法名),执行该方法。
对应本程序的调用为:
第一次点击buttong,运行到“NewClass newClass=new NewClass();”依次调用:静态初始化->非静态初始化->构造函数;运行到newClass.test(),调用test()。
第二次点击buttong,运行到“NewClass newClass=new NewClass();”依次调用:非静态初始化->构造函数;运行到newClass.test(),调用test()。
类加载只会在第一次调用时加载,以后就不会加载,这也就是为什么类中的static成员变量只会被初始化一次。

Android Logcat和Debug的使用

12. Debug调试是跟踪程序非常有效的途径。如下为如何设置断点。

Android Logcat和Debug的使用

13. 打开Debug的显示窗口。

Android Logcat和Debug的使用

14. 设置断点,使用Debug as Android Application运行程序。

Android Logcat和Debug的使用

15. 查看logcat输出。

Android Logcat和Debug的使用

16. 使用debug运行时修改final成员变量。

Android Logcat和Debug的使用

17. 查看logcat,final 变量修改不生效。

Android Logcat和Debug的使用

18. 另外一种运行dubug方法,不需要重新编译工程。直接在已有的app上设置断点调试。通过DDMS设置。DDMS通过show view可以显示出来。

Android Logcat和Debug的使用


最后附上Eclipse 在开发中使用到的快捷键很实用噢(转载)
 

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行 
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

编辑
作用域 功能 快捷键 
全局 查找并替换 Ctrl+F 
文本编辑器 查找上一个 Ctrl+Shift+K 
文本编辑器 查找下一个 Ctrl+K 
全局 撤销 Ctrl+Z 
全局 复制 Ctrl+C 
全局 恢复上一个选择 Alt+Shift+↓ 
全局 剪切 Ctrl+X 
全局 快速修正 Ctrl1+1 
全局 内容辅助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space 
Java编辑器 显示工具提示描述 F2 
Java编辑器 选择封装元素 Alt+Shift+↑ 
Java编辑器 选择上一个元素 Alt+Shift+← 
Java编辑器 选择下一个元素 Alt+Shift+→ 
文本编辑器 增量查找 Ctrl+J 
文本编辑器 增量逆向查找 Ctrl+Shift+J 
全局 粘贴 Ctrl+V 
全局 重做 Ctrl+Y 

查看
作用域 功能 快捷键 
全局 放大 Ctrl+= 
全局 缩小 Ctrl+- 

窗口
作用域 功能 快捷键 
全局 激活编辑器 F12 
全局 切换编辑器 Ctrl+Shift+W 
全局 上一个编辑器 Ctrl+Shift+F6 
全局 上一个视图 Ctrl+Shift+F7 
全局 上一个透视图 Ctrl+Shift+F8 
全局 下一个编辑器 Ctrl+F6 
全局 下一个视图 Ctrl+F7 
全局 下一个透视图 Ctrl+F8 
文本编辑器 显示标尺上下文菜单 Ctrl+W 
全局 显示视图菜单 Ctrl+F10 
全局 显示系统菜单 Alt+- 

导航
作用域 功能 快捷键 
Java编辑器 打开结构 Ctrl+F3 
全局 打开类型 Ctrl+Shift+T 
全局 打开类型层次结构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资源 Ctrl+Shift+R 
全局 后退历史记录 Alt+← 
全局 前进历史记录 Alt+→ 
全局 上一个 Ctrl+, 
全局 下一个 Ctrl+. 
Java编辑器 显示大纲 Ctrl+O 
全局 在层次结构中打开类型 Ctrl+Shift+H 
全局 转至匹配的括号 Ctrl+Shift+P 
全局 转至上一个编辑位置 Ctrl+Q 
Java编辑器 转至上一个成员 Ctrl+Shift+↑ 
Java编辑器 转至下一个成员 Ctrl+Shift+↓ 
文本编辑器 转至行 Ctrl+L 

搜索
作用域 功能 快捷键 
全局 出现在文件中 Ctrl+Shift+U 
全局 打开搜索对话框 Ctrl+H 
全局 工作区中的声明 Ctrl+G 
全局 工作区中的引用 Ctrl+Shift+G 

文本编辑
作用域 功能 快捷键 
文本编辑器 改写切换 Insert 
文本编辑器 上滚行 Ctrl+↑ 
文本编辑器 下滚行 Ctrl+↓ 

文件
作用域 功能 快捷键 
全局 保存 Ctrl+X 
Ctrl+S 
全局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关闭 Ctrl+Shift+F4 
全局 属性 Alt+Enter 
全局 新建 Ctrl+N 

项目
作用域 功能 快捷键 
全局 全部构建 Ctrl+B 

源代码
作用域 功能 快捷键 
Java编辑器 格式化 Ctrl+Shift+F 
Java编辑器 取消注释 Ctrl+\ 
Java编辑器 注释 Ctrl+/ 
Java编辑器 添加导入 Ctrl+Shift+M 
Java编辑器 组织导入 Ctrl+Shift+O 
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。 

运行
作用域 功能 快捷键 
全局 单步返回 F7 
全局 单步跳过 F6 
全局 单步跳入 F5 
全局 单步跳入选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 继续 F8 
全局 使用过滤器单步执行 Shift+F5 
全局 添加/去除断点 Ctrl+Shift+B 
全局 显示 Ctrl+D 
全局 运行上次启动 Ctrl+F11 
全局 运行至行 Ctrl+R 
全局 执行 Ctrl+U 

重构
作用域 功能 快捷键 
全局 撤销重构 Alt+Shift+Z 
全局 抽取方法 Alt+Shift+M 
全局 抽取局部变量 Alt+Shift+L 
全局 内联 Alt+Shift+I 
全局 移动 Alt+Shift+V 
全局 重命名 Alt+Shift+R 
全局 重做 Alt+Shift+Y


参考:

http://android.blog.51cto.com/268543/322518/

http://xys289187120.blog.51cto.com/3361352/657169



Android Logcat和Debug的使用,布布扣,bubuko.com

Android Logcat和Debug的使用

上一篇:android DOM解析XML


下一篇:在安卓下控制基于树莓派的小车 皆用python实现