使用Dalvik Debug Monitor

Android提供了调试工具被称为Dalvik Debug Monitor Server (DDMS),其提供了端口映射服务;的屏幕捕捉,设备的线程和堆栈信息;logcat,进程堆的信息,和radio state 信息; 来电和短信仿真;位置数据仿真等等。这页提供了DDMS功能有限的讨论,这并没有详尽探索所有的特性和功能。

DDMS放在 SDK的tools/ 目录下。从终端/控制台进入这个目录,输入ddms (或 ./ddms 在Mac/Linux的系统中)来运行它。DDMS将同时启动仿真器和连接的设备。如果两者都连接并同时运行,DDMS默认为模拟器。

DDMS如何工作
DDMS扮演中间人的角色,其连接IDE和运行在设备上的应用程序。在Android上,每一个应用程序运行在自己的进程中, 每个驻留在自己的虚拟机(VM),每一个进程通过不同的端口侦听调试器。

当它启动时,DDMS连接到Android Debug Bridge(adb),并且启动设备监测服务在两者之间,当一个设备连接或断开时,它会通知DDMS服务。当一个设备被连接,VM监控服务被创建在adb和DDMS之间,它会通知DDMS当设备上的VM启动或终止。一旦虚拟机运行,DDMS检索VM的进程ID(PID),通过adb, 并打开一个连接到虚拟机的调试器,通过在设备上的adb守护进程(adbd)。 DDMS现在可以跟VM使用自定义wire protocol 。

对于每个设备上的虚拟机,DDMS打开一个端口时,它会听取了调试。首虚拟机,DDMS侦听端口8600上调试,下次8601,依此类推。当调试器连接到其中一个端口,接下来所有的通信将在调试器和相关的虚拟机之间进行。调试像任何远程调试会话一样进行 。

DDMS 也开启另一个本地端口: DDMS “基本端口”(默认是 8700 ),同样在此端口上侦听调试器。当调试器连接到“基本端口”,所有的连接会被转移到 DDMS 中当前选择的虚拟机上,因此这通常是你的调试器应该连接的端口。

要获取 DDMS 的端口转移的更多信息,参考“配置您的 IDE ,链接到 8700 端口进行调试”。

提示:你可以通过菜单 File > Preferences 设置 DDMS 参数。参数保存在 "$HOME/.ddmsrc" 中。

 

已知与达尔维克调试问题
调试中的Dalvik虚拟机应用程序应该相同的工作,因为它不其他虚拟机。但是,当单走出同步的代码,“当前行” 光标可能跳转到方法中的最后一行的一个步骤。

左窗格
在调试监视器左边显示,每个名单模拟器/设备目前发现,     目前所有的船民在每个运行。     越南确定由它承载的应用程序包名称。

使用此列表来查找和附加到虚拟机     运行活动(载体),您要调试。旁边的每个虚拟机     列表是一个“调试传递”端口(在最右侧一列)。     如果您连接调试器对列入名单的港口,一个你     将连接到设备上的相应的虚拟机。但是,当使用      DDMS,你只需要连接到端口8700,作为DDMS转发所有的交通在此,     当前选择的虚拟机。 (请注意,当你选择清单中的虚拟机,在上市的港口,包括8700。)     这样,就没有必要重新配置调试的端口每次虚拟机之间切换。

当应用程序运行在设备上要求 waitForDebugger() (或您选择此选项 开发     选项 ),一个红色的图标将会显示给客户名称,而它的等待     调试器附加到越南船民。当调试器连接,该图标会变成绿色。

如果您看到一个打叉的错误图标,这意味着DDMS无法完成1 调试器之间的连接和虚拟机,因为它无法打开虚拟机的本地端口。 如果您看到了设备上的所有船民这一点,可能是因为你有其他实例 DDMS运行(这包括Eclipse插件)。

如果你看到一个应用程序包的地方是一个问号,这意味着, 一旦DDMS得到亚行的PID应用程序,它某种原因而未能作出与虚拟机进程的成功握手。请尝试重新启动DDMS。

右边的窗格
在右边的选项卡调试监视器提供有用的信息显示和一些很酷的工具。

信息
这种观点显示了一些关于选择虚拟机一般情况,包括过程的信息,     标识,包装的名称,和VM版本。

主题
线程认为有在目标VM进程中运行的线程列表。      为了减少金额     在通过网络发送数据,线程更新只发送时明确     启用切换的“主题”按钮     在工具栏。这切换维持每个VM。此选项卡包括以下内容     信息:

编号 -虚拟机分配的唯一的线程ID。在达尔维克,这些都是         从3日开始的奇数。
工业贸易署 - Linux的线程ID。对于在一个进程的主线程,         这将匹配的进程ID。
身份 -在VM线程状态。守护线程         显示星号(*)。这将是下列之一:
运行 -执行应用程序代码
睡觉 -称为调用Thread.sleep()
显示器 -等待获取锁监视器
等待 -在Object.wait()
原生 -执行本地代码
vmwait -等待虚拟机资源
僵尸 -线程在死亡过程
初始化 -线程正在初始化(你不应该看到这个)
开始 -线即将启动(你不应该看                 此功能)
utime -累计花费的时间执行用户代码,在“jiffies计”(通常          10毫秒)。
准时 -累计花费的时间执行系统的代码,在“jiffies计”(通常          10毫秒)。
名字 -该线程的名称
“ID”和“名称”时设置的线程启动。其余     定期更新的字段(默认值为每4秒)。

虚拟机堆
一些堆统计显示,在垃圾收集更新。如果,当虚拟机被选中, 鉴于在VM堆说,堆更新未启用,然后点击“显示堆更新”按钮, 在顶部的左工具栏。早在虚拟机堆视图中,点击 原因气相色谱 执行垃圾收集和更新堆统计信息。

分配跟踪
在此视图中,您可以跟踪每个虚拟机的内存分配。 在左窗格中,单击选择一个虚拟机 开始跟踪 ,然后 获得拨款 查看所有跟踪开始以来的拨款。 下表将填补所有有关数据。再次点击刷新列表。

仿真控制
有了这些控件,可以模拟特殊设备状态和活动。 功能包括:

电话状态 -改变手机的语音和数据国家计划      (家,漫游,查询等),以及模拟的网络速度和不同类型的延迟      (GPRS的,边缘,UTM进行,等等)。
行动电话 -进行模拟电话和短信到仿真器的消息。
位置控制 -发送位置数据,以模拟仿真器,让您可以执行   位置如GPS地图知道行动。
要使用位置控制,发射的机器人仿真器并打开DDMS您的应用程序。 单击仿真控制选项卡,向下滚动到位置控制。 从这里,您可以:

手动发送单独的经度/纬度坐标到设备。
点击 手册 , 选择坐标格式,填写字段并单击 发送 .

使用中继文件中描述的回放设备的通道。
点击 中继 并载入档案。一旦加载, 单击播放按钮,播放您的位置感知应用途径。

当他们从GPX中播放,您可以调整速度从DDMS播放面板,并与暂停和跳过按钮控制播放。 DDMS将分析两个航点(<wpt> 在第一个表),         和首曲目(<trk> , 第二个表,为多领域的支持, <trkseg> ,         虽然他们只是串联)。只有轨道可以发挥作用。单击列表中的第一个航点简单发送其协调,设备,在选择轨道让你玩。

使用KML文件,描述的顺序播放设备个别地标。
点击 的KML 并载入档案。一旦加载, 点击播放按钮发送到您的坐标位置感知应用程序。

当使用的KML文件,它分析了 <coordinates> 元素。其价值应该是一个单一     一套经度,纬度和海拔高度的数字。例如:

<coordinates> -122.084143,37.421972,4“/坐标”在您的文件,您可以包括多个 <Placemark> 元素,每个包含字母a <coordinates> 元素。当你这样做,将收集的地标增加一款,作为轨道。 DDMS将派遣一个每秒的设备标。

一种方法来生成一个合适的KML文件是找到一个在谷歌地球上的位置。 右键单击项的位置在左边选择“保存的地方,看起来...” 与保存设置的KML格式。

注: DDMS不支持创建的路线 <MultiGeometry> <LineString> lat1,long1,lat2,long2,....</ LineString“”/ MultiGeometry“ 方法。 也有目前没有支持 <TimeStamp> 节点内那个 <Placemark> 。 未来的版本可以支持在一个单一的定时元件位置坐标和路线。

为了 额外 设立地点嘲笑方法的数据,请参阅 位置 主题。

文件管理器
与文件管理器,您可以查看该设备的文件系统,执行基本的管理, 推,拉等文件。使用这种绕过 亚行 推 和 拉 使用GUI经验的命令。

随着DDMS打开,选择 设备 > 文件管理器... 打开文件资源管理器窗口。您可以拖放,到设备目录下降,但不能拖 外面的 其中。 若要从设备复制文件,选择文件并单击 撤出设备文件 按钮在工具栏。要删除文件,请使用 删除 按钮在工具栏。

如果你在模拟器上使用的SD卡图片感兴趣,您仍然需要使用那个 mksdcard 命令来创建一个图像,然后安装在模拟器启动时它。 例如,从 /工具 目录中,执行:

$

 


 mksdcard 1024M。/ img

 


$

 


 模拟器- SD卡。/ img

 


现在,当仿真器运行时,DDMS文件资源管理器将能够读取和写入 SD卡目录。但是,您的文件可能不会自动出现。例如,如果您添加 MP3文件到SD卡,媒体播放器将不会看到直到重新启动模拟器他们。 (当重新启动从命令行模拟器,一定要安装的SD卡了。)

有关创建一个SD卡的图像信息,请参阅 其它工具 文件。

屏幕捕获
您可以捕获通过选择设备或仿真器屏幕图像 设备 > 屏幕截图... 在菜单栏,或者按Ctrl - S。 一定要选择一个设备的第一个。

探索过程
你可以看到输出 的ps - x 特定虚拟机的选择 设备 > 显示进程状态 ...在菜单栏中。

导致发生气相色谱
垃圾收集的原因发生在选定的应用程序按垃圾桶栏上的按钮。

运行Dumpsys和设备(logcat Dumpstate)
要运行 dumpsys (logcat从达尔维克)选择 设备 > 运行logcat ... 在菜单栏中。
要运行 dumpstate 选择达尔维克, 设备 > 转储设备         状态... 在菜单栏中。
检查国家广电总局
默认情况下,国家广电总局是不是在一个标准logcat输出(这是一个很大的     信息)。要查看广播信息,或者单击 设备 > 转储电台     状态... 或运行所述logcat 测井     电台信息 .

停止虚拟机
您可以选择停止虚拟机 动作 > 停止虚拟机 。按下此按钮,会导致虚拟机调用 Runtime.halt(1) .

与DDMS已知问题
DDMS有以下已知的限制:

如果您连接和断开调试,ddms下降,重新连接         客户端,以便在VM认识到,调试已经消失。这将是固定的         最终。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lihaifeng555/archive/2009/11/13/4806992.aspx

posted @ 2010-06-02 11:24  my favorite  阅读(1140)  评论(0编辑  收藏  举报