使用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认识到,调试已经消失。这将是固定的         最终。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值