[转】:Android调试工具及方法

http://www.cnblogs.com/feisky/archive/2010/01/01/1637566.html
--

Logcat


Dump一份系统消息的日志。这些消息包括模拟器抛出错误时的堆栈跟踪。


Android Log


一个记录日志的类,用来将消息写入模拟器上的日志文件中。如果你在DDMS上运行logcat的话你可以就实时查看消息。在你的代码中加入几个写日志方法的调用。
为了使用Log类,你只需要调用Log.v()(详细),Log.d()(debug),Log.i()(information),Log.w()(warning)
或者 Log.e()(error),根据你想获得的日志信息来选择相应的方法

Log.i("MyActivity", "MyClass.getView() — Requesting item number " + position)
你可以用logcat来读取这些信息

Traceview

Android可以保存一个日志用来记录被调用的方法以及该方法被调用的次数,通过Traceview你可以在一个图形化的界面中查看这个日志文件。

adb


Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器的状态。

发出Android命令: 你可以在你的开发机上的命令行或脚本上发布Android命令,使用方法:

adb [-d|-e|-s <serialNumber>] <command>

进入Shell:adb shell

查询模拟器/设备实例
adb devices 列出模拟器的序列号和状态

给特定的模拟器/设备实例发送命令
如果有多个模拟器/设备实例在运行,在发布adb命令时需要指定一个目标实例。 这样做,请使用-s
选项的命令。在使用的-s 选项是
adb -s <serialNumber> <command>
如:db -s
emulator-5556 install helloWorld.apk

安装软件:
adb install <path_to_apk>

从模拟器/设备中拷入或拷出文件
可以使用adbpull ,push
命令将文件复制到一个模拟器/设备实例的数据文件或是从数据文件中复制。install 命令只将一个.apk文件复制到一个特定的位置,与其不同的是,pull 和
push 命令可令你复制任意的目录和文件到一个模拟器/设备实例的任何位置。
从模拟器或者设备中复制文件或目录,使用(如下命):
adb pull
<remote> <local>
将文件或目录复制到模拟器或者设备,使用(如下命令)
adb push
<local> <remote>
在这些命令中, <local> 和<remote>
分别指通向自己的发展机(本地)和模拟器/设备实例(远程)上的目标文件/目录的路径
下面是一个例子::
adb push foo.txt
/sdcard/foo.txt

查询日志 adb logcat

Stopping the adb Server
在某些情况下,你可能需要终止Android 调试系统的运行,然后再重新启动它。
例如,如果Android 调试系统不响应命令,你可以先终止服务器然后再重启,这样就可能解决这个问题.
用kill-server 可以终止adb
server。你可以用adb发出start-server命令来重新启动服务器.

设备上调试和测试的设置


Android提供了众多的设置使你可以更容易的调试和测试程序。要进入开发设置页面,在模拟器中转到Dev Tools > Development
Settings
。在该设置页面有以下选项:


  • Debug app:选择要调试的程序。你不需要设定其关联至调试器,但是设定这个值有两个效果:

  • 在调试的时候,如果你在一个断点处暂停了过长的时间,这个设定会防止Android抛出一个错误
  • 这个设定使你可以选择“等待调试器”选项,使程序只有在调试器关联上之后才启动

Wait for
Debugger
:阻塞所选的程序的加载直到有调试器关联上,这样你就可以在onCreate()中设置断点,这对于调试一个Activity的启动进程是非常重要的。当你对该选项进行了更改,任何正在运行的程序的实例都会被终止。你只有在上面的选项中选择了一个调试程序才能够选中该选项。你也可以在代码中添加waitForDebugger()来实现同样的功能。

Immediately destroy
activities
:告诉系统一旦一个activity停止了就销毁该activity(例如当Android释放内存的时候)。这对于测试代码onFreeze(Bundle)/onCreate(android.os.Bundle)是非常有用的,否则会比较困难。如果你的程序没有保存状态,那么选择这个选项很可能会引发很多问题。

Show screen updates:对于任何正在被重绘的screen
sections都会在其上闪现一个粉红色的矩形。这对于发现不必要的screen绘制是很有必要的。
Show CPU
usage
:在屏幕上方显示CPU信息,显示有多少CPU资源正在被使用。上方红色条显示总的CPU使用率,它下方绿色的条显示CPU用在compositing
the screen上的时间。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
Show screen
FPS
:显示当前的帧率。这对于查看游戏达到的总的帧率是非常有用的。注意:在没有重启模拟器之前,一旦你开启了该功能就不能关闭。
Show background:当没有activity
screens可见时,显示一个背景模式。一般是不会出现的,仅仅在Debug的时候会出现。

设定的选项在模拟器重启之后仍然有效,如果要取消设定的选项,在取消设定以后还要重启模拟器,才能生效。

重要的调试小提示


快速的堆栈dump

要在模拟器上获得一个堆栈dump,你可以通过adb shell登入,用“ps”找到你想要的进程,然后“kill -3”,
堆栈跟踪信息就会记录到日志文件中了。

在模拟器屏幕上显示有用信息

设备上可以显示诸如CPU利用率或者对重绘区域的边缘高亮显示等有用信息,在开发设置窗口可以打开或者关闭这些功能。

从模拟器上获取系统状态信息(dumpstate)

你可以通过Dalvik Debug Monitor Service工具来获得dumpstate信息。

从模拟器上获取程序状态信息(dumpsys)

你可以通过Dalvik Debug Monitor Service工具来获得dumpsys信息。

获取无线连接信息

你可以通过Dalvik Debug Monitor Service工具来获得无线连接信息。在Device菜单,选择“Dump radio state”

日志记录跟踪数据

你可以在一个activity中通过调用android.os.Debug.startMethodTracing()来用日志来记录方法调用和其他跟踪数据。

日志记录Radio Data

默认情况下,radio信息是不会记录在系统中的(因为数据量巨大)。然而,你可以通过下面的命令来开启radio记录
adb shell
logcat -b radio

运行adb

Andoid中自带了一个叫adb的工具,该工具功能强大,可以移动并同步文件到模拟器,转发端口。在模拟器上运行一个UNIX shell。

从模拟器上获取屏幕截图

Dalvik Debug Monitor Server (DDMS)可以从模拟器上获取屏幕截图

利用调试帮助类

     Android为了开发者的方便提供了诸如util.LogDebug等帮助类


命令行运行程序的方法


参考:http://www.javaeye.com/topic/201856 
http://www.javaeye.com/topic/149227


进入shell


引用

C:\Documents and Settings\mawenjian>adb
shell

看一下命令的帮助

引用


# am -help
am
-help
Error: Unknown command:
-help
usage: am
[start|instrument]
       am start
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
                [-c <CATEGORY> [-c
<CATEGORY>] ...]
                [-e <EXTRA_KEY>
<EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
                [-n <COMPONENT>]
[-D] [<URI>]
       am
instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
                [-w]
<COMPONENT>

好了,试一下启动浏览器

引用

# am start -n
com.google.android.browser/com.google.android.browser.BrowserActivity
am start -n
com.google.android.browser/com.google.android.browser.BrowserActivity
Starting: Intent {
comp={com.google.android.browser/com.google.android.browser.BrowserActivity}
}

ok,成功了
大家试试下面的命令吧:

引用


# am start -a android.intent.action.VIEW -d
http://mwjian.javaeye.com
am start
-a android.intent.action.VIEW -d http://mwjian.javaeye.com
Starting: Intent {
action=android.intent.action.VIEW data=http://mwjian.javaeye.com }

# am start -a
android.intent.action.CALL -d tel:88888888
am start -a android.intent.action.CALL
-d tel:88888888
Starting: Intent {
action=android.intent.action.CALL data=tel:88888888 }

# am start -a
android.intent.action.ALL_APPS
am
start -a android.intent.action.ALL_APPS
Starting: Intent {
action=android.intent.action.ALL_APPS }

# am start -a
android.intent.action.VIEW geo:0,0?q=shanghai
am start -a android.intent.action.VIEW
geo:0,0?q=shanghai
Starting: Intent
{ action=android.intent.action.VIEW data=geo:0,0?q=shanghai
}

 

本文参考:Android手册 www.cnblogs.com/jacktu
万能的G.cn

转载于:https://www.cnblogs.com/Jessy/archive/2012/01/17/2324414.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习笔记(九)——决策树的生成与剪枝

一、决策树的生成算法 基本的决策树生成算法主要有ID3和C4.5, 它们生成树的过程大致相似&#xff0c;ID3是采用的信息增益作为特征选择的度量&#xff0c;而C4.5采用信息增益比。构建过程如下&#xff1a; 从根节点开始&#xff0c;计算所有可能的特征的信息增益&#xff08;信…

apache+webdav的安装配置

原始资料&#xff1a;http://www.howtoforge.com/setting-up-webdav-with-apache2-on-debian-etch apachewebdav的安装配置 需求&#xff1a;1.开启一个web服务&#xff0c;使得客户端能够像操作本地磁盘一样操作服务端某个文件目录下的文件在服务器上安装配置apachewebdav模块…

最优化学习笔记(二)——二分法

二分法是一种一维搜索方法。它讨论的是求解一元单值函数f:R→R在区间[a0,b0]的极小点问题。同时要求函数f在区间[a0,b0]上为单调函数&#xff0c;并且是连续可微的&#xff0c;这里将使用f的一阶导数f′。 二分法的计算过程比较简单&#xff0c;它主要是利用一阶导数来连…

elasticsearch内部版本控制

现在我将这个price价格改为10&#xff0c;看下版本有什么变化&#xff1f; 获取一下 返回结果我们知道价格price已经修改为10&#xff0c;_version已经变成2 我们把参数version改成2试试 我们从执行结果可知&#xff0c;我们已经修改成功&#xff0c;并且版本自增为3

JAVA每个初学者都应该搞懂的问题 还可以比较基础

还可以比较基础 转自http://blog.csdn.net/devillyd/article/details/2486520 对于这个系列里的问题&#xff0c;每个学Java的人都应该搞懂。当然&#xff0c;如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了&#xff0c;却不很懂这些问题&#xff0c;请将你自己…

最优化学习笔记(三)——梯度下降法

本来这周计划写下逻辑回归的学习笔记&#xff0c;但是其中用到了最优化对数似然函数&#xff0c;因此决定先复习下梯度方法和拟牛顿法。本节先从纯数学的角度总结下梯度下降法。 一、柯西-施瓦茨不等式 对于 Rn中的任意两个向量 x和y&#xff0c; 有&#xff1a; |<x,y&g…

ElasticSearch外部版本控制

#外部版本控制机制| PUT /library/books/1?version5&version_typeexternal {"title": "Elosticsearch: The Definitive Guide" ,"name":{"first" : "Zachary","last" : "Tong"},"publish_dat…

最优化学习笔记(四)——最速下降法

一、最速下降法的理念 最速下降法是梯度方法的一种实现&#xff0c;它的理念是在每次的迭代过程中&#xff0c;选取一个合适的步长αk&#xff0c;使得目标函数的值能够最大程度的减小。αk可以认为是函数ϕk(α)f(x(k)−α∇f(x(k)))的极小值点&#xff1a; αkargminf(x(k)−…

关于 win7 远程桌面的多用户问题

关于 win7 远程桌面的多用户问题 [转]系统是 64位WIN7 旗舰版 每当我用其它机器连WIN7的3389远程桌面时&#xff0c;WIN7那台机子就会退出到注销用户后的状态了&#xff0c;后来我新建了个用户&#xff0c;用不同用户登陆还是退出&#xff0c;也就是说不能同时2个人操作电脑&am…

ElasticSearch映射Mapping

1.1 什么是映射 (1) 映射(mapping): 定义index的元数据, 指定要索引并存储的文档的字段类型. 也就是说映射决定了Elasticsearch在建立倒排索引、进行检索时对文档采取的相关策略, 如数字类型、日期类型、文本类型等等. 需要注意的是: 检索时用到的分析策略, 要和建立索引时的分…

机器学习笔记(十)——Logistic Function AND Softmax Function

一、说明 在逻辑回归和一些机器学习算法中&#xff0c; Logistic函数和Softmax函数是常用到的&#xff0c;今天就先讨论下这两个函数。 二、Logistic Function Logistic function一般用于二分类问题&#xff0c;它的函数定义如下&#xff1a; f(x)11e−x(1)f(x) = \frac{1}{1…

2012开博

2012是一个新的开始&#xff0c;希望学习更多的新技术&#xff0c;结交更多的新朋友。也将自己的技术博客转到博客园来!转载于:https://www.cnblogs.com/yangjun1120/archive/2012/01/30/2332111.html

kibana客户端工具操作ElasticSearch(增删改查三)

之前一直我们讲的是添加文档和查看文档&#xff0c;下面我们看下怎么修改文档&#xff0c; 第一种方式PUT 覆盖原来的文档 修改文档&#xff08;覆盖原来的&#xff09;&#xff1a; PUT /lib/user/1 {"first_name":"Jane","last_name":"…

Word2Vec学习笔记(一)

目录 Word2Vec基本数学内容语言模型Hierarchical Softmax 模型Negative Sampling 模型 一、Word2Vec基本数学内容 1. Sigmod 函数 &absp;&absp;&absp;&absp;Sigmod函数通常在二分类中应用。它将样本映射后投影在[0, 1]范围内&#xff0c;对应样本所属的类的…

SQL Tuning Advisor简单使用

SQL Tuning Advision是Oracle提供的一个功能包&#xff0c;可以针对有性能问题的SQL给出优化建议。可以作为调优的辅助手段。 建立测试表和索引create table t_1 as select * from dba_objects;create table t_2 as select * from dba_tables;create index idx_t_2_ts on t_2(t…

Multi GET API介绍

#先添加几个文档 PUT /lib/user/1 {"first_name":"Jane","last_name":"Smith","age":36,"about":"I like to collect rock albums","interests":["music"] }PUT /lib/user/2 {&qu…

Word2Vec学习笔记(二)

二、语言模型 语言模型可以分为文法型模型和统计语言模型。在实际应用中语言识别、手写体文字识别、机器翻译、键盘输入、信息检索等研究领域都用到了语言模型。文法型语言模型是人工编制的语言学文法&#xff0c;文法规则来源于语言学家掌握的语言学知识和领域知识&#xff0c…

echo中使用逗号和句号的区别

echo中是可以用逗号来连接字符串的.经过测试.这样的连接字符串方式要比直接用点号要快. //PHP是先连接字符串再进行加法计算了.按照从左向右的方向进行的。//如果将一个字符串强制转换成一个数字.PHP会去搜索这个字符串的开头.如果开头是数字就转换.如果不是就直接返回0echo 51…

Multi GET  API

Multi GET API介绍 GET /lib/user/_mget {"docs":[{"_id":1},{"_type":"user","_id":2}] } #返回值 {"docs" : [{"_index" : "lib","_type" : "user","_id&qu…