android 如何分析应用的内存(五)

news/2024/12/5 6:48:45/

android 如何分析应用的内存(五)

接上文

lldb的工具篇的GUI部分。分成两部分:

  1. vscode 的LLDB
  2. as的LLDB

接下来是as的LLDB

as的LLDB

为了进行LLDB的调试,需要对as进行配置,事实上,每一个在AS中编辑的应用,都会有一个默认配置。

我们先从手动添加配置,开始,然后再过渡到默认配置。

手动添加debug配置。

分别点击 run-》edit configurations,如下图
在这里插入图片描述

在弹出框中,点击左上角的加号,选择Android APP,并命名如下图
在这里插入图片描述

因为本文章仅调试,所以并不需要在General标签页中,指定APP启动的各种选项。General中的参数说明,见下一小节。

需要说明的是,各种debug type:

Java Only:表示只对Java进行调试
Native Only:表示只对Native进行调试,As默认使用LLDB
Detect Automaticlly:自动检测,根据你使用的语言,自动选择调试工具
Dual:表示两个调试工具都使用。

接下来就是进行debug了。Android的debug有两种方式。图标如下:
在这里插入图片描述

图标1:as重新编译并运行,然后开始调试(因为本文章,仅仅涉及调试,所以不使用它)
图标2:as将调试器,attach到一个应用程序上

点击第二个图标,弹出选项框,选择自己配置的debug选项,这里提供的例子是:piano-lldb
在这里插入图片描述

然后,就会进入调试界面。

注意:部分AS试程序可能出现下面的情况

  1. 点击图标一,出现没有可以调试的程序
  2. 点击图标二,依然没有可以调试的程序,但是有Android 手机。

解决办法:File-》invalidate caches 然后在弹出框中,点击invalidate and restart 即可。

在这里插入图片描述
在这里插入图片描述

因为AS的调试,大家都比较熟悉,因此,直接贴一张总图
在这里插入图片描述

as的默认配置选项

本部分仅仅对,上一小节中,提及的默认配置,做介绍性说明。

为何会有这部分说明?

因为,对于Framework 工程师而言,AS提供的功能有限,可能并不适用,所以可以使用jetbrain的相关IDE,如Intellig IDEA
和CLion。介绍AS的默认配置,可以帮组Framework工程师,理解jetbrain的配置选项。

依然按照,run-》Edit configuration,打开如下界面。
在这里插入图片描述
deploy的四种方式:

  1. default apk:即默认就是安装apk
  2. apk from app bundle:会将apks从apk中抽取出来,然后再安装
  3. custom artifact:只得是,可以自定义部署的部件,不仅仅是apk,还可以是其他的jar包,aar等等

对于debugger标签页,见下图

在这里插入图片描述

as LLDB的及时调试技术

方法同gdb里面介绍的一样,可参见gdb篇章,
android 如何分析应用的内存(二)

as LLDB加载corefile

非常之不幸,Android studio提供的配置项,并没有提供对core file的支持。但是我们可以使用它的替代产品,jetbrains的Clion。它的配置,同上面介绍的几乎完全一样。因此不再过多赘述。

至此,所有关于native内存的前三部分介绍完成,如下:

native部分

  1. 寄存器内容是什么。如pc指向何处,sp指向何处
  2. 指定地址内容是什么。如变量a对应的内容
  3. 线程堆栈内容是什么。如主线程的堆栈,UI线程的堆栈
  4. 堆区的对象有哪些。

java部分

  1. 线程堆栈有什么内容。
  2. 堆中对象分配情况

与其说是native的内存,倒不如说是native的调试。但,为了内存知识的丰富性和整体性,将这部分也划入Android的内存部分。

关于Android代码如何调试,如怎样调试AOSP的原生代码,怎么分析各种各样的崩溃,或许后面会有时间单独一个专题。

接下来就是native内存部分的重点章节了。不同的分析技术,可能需要不同的代码。

即将介绍的部分有:

  1. 手动实现,new和delete,以及malloc和freee,并统计内存分配情况
  2. 使用malloc hook
  3. 使用Malloc和libc回调,搭配使用DDMS
  4. 使用AddressSanitizer
  5. 使用HWASan/Asan工具,查找内存错误
  6. 使用perfetto工具,他也可以分析java部分

题外话:就个人使用情况而言,并不是很推荐AS的LLDB,更推荐使用VScode的LLDB。而使用gdb的时候,我也不推荐使用命令行,更推荐使用Clion。它有非常快速且有好的UI界面。


http://www.ppmy.cn/news/298358.html

相关文章

低温泵变频matlab,低温地热间接供热换热参数优化与MATLAB实现

1优化设计方法及其数学描述图1为本文所研究的低温地热间接供热系统流程图。低温地热间接供热系统由地热生产(回灌)井、间接板式换热器、辅助板式换热器及供热终端(辐射地板或风机盘管)组成。平常低温地热水满足建筑的基本负荷的需要;负荷高峰时,辅助热源(调峰锅炉)启动运行。换…

聊空调冷热源的选择逻辑与原则

近年来,建筑项目空调系统初投资与运行费用均较高,作为空调系统设计过程中的一个重要的决策环节,冷热源方案的选择非常重要。冷热源形式不同,系统的初投资和能耗差别会很大。如何决策出合理的空调方式,需要对众多影响因…

2022施工员-设备方向-通用基础(施工员)操作证考试题及模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2022汽车修理工(初级)考试100题是汽车修理工(初级)模拟考试题库全真模拟题!2022年汽车修理工(初级)考试题模拟考试题库及在线模拟考试…

建筑“光储直柔”配用电系统关键技术分析

低碳发展背景下的建筑“光储直柔”配用电系统关键技术分析(2021) 摘 要 在低碳发展的背景下,为适应高比例的可再生能源结构,建筑电气化已经成为未来的发展趋势。建筑电气化不仅要提高建筑电气化率,还要发展新型建筑配…

2022年R1快开门式压力容器操作判断题模拟考试平台操作

题库来源:安全生产模拟考试一点通公众号小程序 2022年R1快开门式压力容器操作复习题为R1快开门式压力容器操作考试题目考前押题!2022年R1快开门式压力容器操作判断题模拟考试平台操作依据R1快开门式压力容器操作考前押题。R1快开门式压力容器操作考试资…

几度风雨路 工地铸辉煌 ——访济南四建集团总经理赵吉刚

赵吉刚,1965年6月25日出生,泰安肥城人,暖通专业本科毕业。现任济南四建集团有限责任公司副总经理,济南四建集团有限责任公司建筑安装公司经理。 88 年毕业于山东建筑工程学院。 88 —89年济南四建集团有限责任公司任技术员。 89 —…

工程项目管理流程(转)

A 签订项目管理委托合同B 项目管理部进场C 工程图设计C/01 方案设计C/02 初步设计C/03 初步设计报批C/04 施工图设计C/04.01 施工图设计C/04.02 施工图审核C/04.03 交付图纸D 办理项目规划手续D/01 申请规划设计方案审查通知书D/02 专项审批(人防、消防、交通、园林…

数据中心规划设计参考-(文章以GB 50174为参考基准)

1. 数据中心建设整理 1.1. 国内政策 2019年1月20日,工业和信息化部、国家机关事务管理局、国家能源局日前联合印发《关于加强绿色数据中心建设的指导意见》,明确提出:到2022年,数据中心平均能耗基本达到国际先进水平&#xff0c…