搜索
开启辅助访问切换到宽版
查看: 656|回复: 0

调试 Android x86 应用程序的方法以及要使用的工具

[复制链接]
发表于 2018-10-9 15:01:00 | 显示全部楼层 |阅读模式
1.简介
众所周知,Android*]Android SDK 提供了试应用程序所需的大多数工具。如果希望进行诸如单步调试代码、查看变量值以及暂停执行应用程序的操作,则需要兼容 JDWP 的调试程序。如果使用 Eclipse,则已附带兼容 JDWP 的调试程序,无需设置。如果使用其它 IDE,则可使用其附带的调试程序并将调试程序与特殊端口连接,使其可以和您设备上的应用程序虚拟机通信。
如果使用]
图]借助 DDMS,开发人员可查看进程的堆区使用情况、跟踪对象的内存分配、使用模拟器或设备的文件系统、检查线程信息、获取方法配置、使用网络流量工具(在 Android 4.0 中提供)、使用 LogCat 跟踪代码信息以及模拟手机操作和位置。如欲了解更多信息,请参阅 https://developer.android.com/gu ... debugging/ddms.html。Android SDK 还提供 Hierarchy Viewer(层级观察器)和 layoutopt(布局优化分析工具)帮助开发人员调试布局问题。
Hierarchy]
图]View Hierarchy窗口显示形成您设备上或模拟器上运行的活动的 UI 的视图对象。您可以用它在整个视图树的上下文中查看各个视图对象。对于每个视图对象,View Hierarchy 窗口还显示渲染性能数据。在选择节点时,视图的额外信息出现在节点上方的小窗口中。 在单击其中一个节点时,可看到有关图像、视图计数和渲染时间的信息。
<span]图 3. 查看对象信息窗口
Pixel]
图]layoutopt 工具可让您分析 XML 文件,该文件定义应用程序的用户界面以查找视图层级中的不当之处。要运行工具,可打开终端并从 SDK 工具/目录启动 layoutopt 。 变量是以空格分隔的要分析的资源的列表,可以是未编译的资源 xml 文件或这些文件的目录。工具会加载指定的 XML 文件并根据一组预定义的规则分析它们的定义和层级。 下面是来自工具的输出示例:
$]Traceview 是执行日志的图形化查看器,这些日志在您使用调试类记录代码中的跟踪信息时创建。Traceview 可帮助您调试应用程序并概述其性能。Traceview 可加载日志文件并在窗口中显示其数据,该窗口如图 5 和图 6 所示以两个面板将您的应用程序可视化:

<span]图 5. 时间轴面板描述每个线程和方法何时开始和停止
<span]图 6. Profile(概要)面板提供方法中花费的所有时间的摘要。
dmtracedump]
图]由于 Android NDK 基于 GCC 工具链,Android NDK 包含 GDB、GNU 调试程序,因而可让您启动、暂停、检查和修改程序。在 Android 设备上,GDB 配置为客户端/服务器模式,在嵌入式设备上这种配置更为常见。程序在设备上作为服务器和远程客户端运行。开发人员的工作站与其连接,并发送与本地应用程序相似的调试命令。GDB 本身是一个命令行实用程序,如果手动使用会显得较为繁琐。幸好 GDB 可由大多数 IDE 尤其是 CDT 处理。从而可直接使用 Eclipse 来添加断点并检查程序,但前提是先正确配置它!
通过单击文本编辑器的左端,Eclipse]首先通过以下步骤在我们的应用程序中启用调试模式:
1)有一步操作很重要,但也很容易被忽略,那就是在 Android 项目中激活调试标记。该操作在应用程序清单 AndroidManifest.xml 中完成。请勿忘记对原生代码使用适用的 SDK 版本:
...

<span]2)在清单中启用调试标记会自动以原生代码激活调试模式。但是,APP_OPTIM 标记也控制着调试模式。如果已在 Android.mk 中手动设置它,则检查是否已设置其值以进行调试(并不发布)或直接删除它:
APP_OPTIM]3)现在让我们配置将连接至设备的 GDB 客户端。重新编译项目并插入设备或启动模拟器。运行然后离开应用程序。确保加载应用程序并且其 PID 可用。可通过使用以下命令(在 Windows 中使用 Cygwin)监听进程来检查它:
$]应该会返回一行:
app_75]4)打开终端窗口并转到项目目录。运行 ndk-gdb 命令(位于 Android NDK 文件夹,例如 android-ndk-r8):
$]该命令不会返回消息,但是会在 objlocal? 目录创建三个文件(对于 arm 设备目录为 objlocalarmeabi):

  • gdb.setup:这是为 GDB 客户端生成的配置文件。
  • app_process:该文件直接从您的设备检索。其为系统可执行文件,在系统启动时启动,并可形成分支,启动新的应用程序。GBD 需要该参考文件来查找其标记。在某些方面,其为您的应用程序的二进制输入点。
  • libc.so:该文件也可直接从您的设备检索。其为 GDB 使用的 Android 标准 C 库(通常称为 bionic),用于保持跟踪运行时期间创建的所有原生线程。
    5)在您的项目目录中,复制]6)在 Eclipse 主菜单中,转至“Run(运行)| Debug Configurations(调试配置)...”,并在名为 GL2JNIActivityDefault 的 C/C++ 应用程序项目中创建新的调试配置。该配置将在您的计算机上启动 GDB 客户端并连接至设备上运行的 GDB 服务器。
    7)在]
    图]8)使用窗口底部的链接“Select other(选择其他)...”,将启动程序类型切换为“Standard Create Process Launcher(标准创建进程启动程序)”:
    <span]图 9. 选择首选启动程序
    9)转至调试程序文件并设置调试程序类型为]
    图]10)转至 Connection(连接)选项卡并将类型设置为 TCP。主机名、IP 地址和端口号 (localhost d 5039) 都保留默认值。
    <span]图 11. 调试程序设置面板上的链接设置
    11)现在让我们配置]12)在 Eclipse 主菜单中,转到“Run(运行)| External Tools(外部工具)| External Tools Configurations(外部工具
    配置)...”,并创建新配置 GL2JNIActivity_GDB。
    该配置将在设备上启动 GDB 服务器。
    13)在]
    图]14)现在,和往常一样启动应用程序。
    15)一旦应用程序启动,就可直接通过控制台启动]16)打开 jnigl_code.cpp 并通过双击文本编辑器的左端在 setupGraphics 中设置断点(或右键单击并选择 Toggle breakpoint(切换断点))。
    <span]图 13. 断点设置
    17)最后启动]也有一些专用工具用于调试图形性能,例如 Intel® GPA System Analyzer 为英特尔® 图形性能分析器(英特尔® GPA)之一,新增加了对于英特尔架构 Android 设备的支持,并且专供应用程序和驱动程序工程师优化其 OpenGL* ES 工作量。
    该部分提供的信息涉及如何配置英特尔]要在基于 Android x86 的设备上使用英特尔 GPA System Analyzer,需要从文档检查目标机器和固件/版本。
    要开始收集标准,需要在客户端系统上安装英特尔]1)在 Windows*/Linux* 客户端机器上安装英特尔 GPA 2012 R3。
    2)启动英特尔]3)确保 Android 设备通过 USB 电缆连接至客户端系统。
    4)在客户端系统检测目标设备时,最多等待]5)查找要连接的设备并单击“Connect(连接)”。英特尔 GPA System Analyzer 会将所需的组件复制到目标设备并生成已安装应用程序的列表。可通过单击“Stop(停止)”中断连接进程。
    <span]图 14. 选择互联设备
    6)从可用应用程序列表中选择所需的应用程序。“Application]
    图]7)将会启动应用程序并且您将在英特尔 GPA System Analyzer 窗口中看到其数据。
    8)要切换至不同应用程序,单击“Back(返回)”。请注意,将强制关闭正在运行的应用程序。
    <span]9)要切换至不同目标,单击“Back(返回)”。
    PowerVR 显卡架构由以下核心模块构成,这些模块可将提交的 3D 应用程序数据转换为渲染的图形:Tile Accelerator (TA)、Image Synthesis Processor (ISP) 以及 Texture & Shading Processor (TSP)。“GPU” 组中的英特尔 GPA 标准对应这些核心模块之一,“Metrics List(标准列表)”中标准的顺序取决于图形管线中核心模块的顺序。
    <span]图 16. Intel GPA System Analyzer 窗口
    Perf]
    图]
    图]UxTune 是一个工程工具,用于 Android 用户交互分析和优化。它是一种增强的 pyTimeChart 工具。
    UxTune 设计特性包括:

    • 垂直相关:将跨层的系统事件映射至用户级别活动,例如事件、手势、帧等。
    • 水平相关:将不同系统实体间的运行时活动(例如一个线程触发垃圾回收)关联。
    • 基于 pyTimeChart 的可视化。
      要使用]
      图]Meter-FPS 是一个工具,用于测量系统的 FPS 值,它会截取显卡处理路径以获得每帧的记录,还包含其他标准,例如最大帧时间、帧时间变化、#长时帧和掉帧率。fps 监控器有两种模式。Real Time Pattern(实时模式)可实时显示所有正在运行的应用程序的 fps。Measure Pattern(测量模式)可在用户定义的启动和停止时间测量 fps 和其他参数。要使用该工具,必须取得设备最高权限。
      设置环境:
      setprop debug.graphic_log 1
      stop zygote
      start zygote
      图]
      20.]在 Real Time(实时)模式中单击监控器按钮。fps 工具将监控所有正在运行的应用程序,并在屏幕上的浮动窗口中更新 fps。
      <span]图 21. Meter-FPS 实时模式
      在]
      图]现在测量模式正在运行:
      <span]图 23. Meter-FPS 实时模式 1
      单击浮动窗口停止监控;其将显示结果:
      <span]
      图]单击上面列表中的每个项目以获取详细记录:
      <span]图 25. Meter-FPS 分析详细记录
      参考:相关文章与资源:
      • Android]Xiaodong Wang 是英特尔软件及服务事业部的应用工程师。 他专注于采用 Android 操作系统的基于英特尔的平台的 ISV。 Xiaodong 提供技术支持的 PRC Plus 项目(Android 平板电脑 ISV 启用)成功启用了前 50 个 NDK 应用程序作为技术接口。最近 Xiaodong 参与了英特尔的数个创新项目,并在开发过程中扮演重要角色。尤其是其中一个项目被选为英特尔信息技术峰会的演示项目,而 Xiaodong 成功地提供了技术支持。 在加入英特尔之前,Xiaodong 在 MediaTek 进行有关框架和应用程序开发的工作。Xiaodong 是北京大学硕士,并在作为访问学者在新加坡南洋大学进行研究期间,在《IEEE 计算机汇刊》上发表了一篇技术论文。他感兴趣的领域为移动互联网技术(例如 LBS、NFC AR 等)以及创新设计。
        声明
        本文件中包含关于英特尔产品的信息。本文件不构成对任何知识产权的授权,包括明示的、暗示的,也无论是基于禁止反言的原则或其他。英特尔不承担任何其他责任。英特尔在此作出免责声明:本文件不构成英特尔关于其产品的使用和/或销售的任何明示或暗示的保证,包括不就其产品的(i)对某一特定用途的适用性、(ii)适销性以及(iii)对任何专利、版权或其他知识产权的侵害的承担任何责任或作出任何担保。
        <span]除非经过英特尔的书面同意认可,英特尔的产品无意被设计用于或被用于以下应用:即在这样的应用中可因英特尔产品的故障而导致人身伤亡。
        英特尔有权随时更改产品的规格和描述,恕不另行通知。设计者不应信赖任何英特产品所不具有的特性,设计者亦不应信赖任何标有保留权利摂或未定义摂说明或特性描述。对此,英特尔保留将来对其进行定义的权利,同时,英特尔不应为因其日后更改该等说明或特性描述而产生的冲突和不相容承担任何责任。此处提供的信息可随时更改,恕不另行通知。请勿根据本文件提供的信息完成一项产品设计。
        <span]本文件所描述的产品可能包含使其与宣称的规格不符的设计缺陷或失误。这些缺陷或失误已收录于勘误表中,可索取获得。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

安卓x86中文站|android x86|androidx86|android for x86

网站简介:安卓X86中文站为安卓桌面版爱好者提供下载、测评、资讯的平台。网站广告收入为维持服务费用,请理解!

自定义文字

关于我们

  • 工作时间:如果QQ没上线请发邮件或留言!谢谢!
  • 客服电话:请QQ资讯
  • 78260551#qq.com
  • 公司地址:四川省中江县南华镇金龙街6号

QQ|小黑屋|手机版|Archiver|安卓x86中文站|android x86|androidx86|android for x86 ( 蜀ICP备12015179号-1 )

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表