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

news2024/11/23 21:37:03

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.coloradmin.cn/o/628388.html

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

相关文章

充电桩检测仪表TK4860E交流充电桩检定装置

波形失真度测量:具备电压电流波形失真度测量功能。 时钟校验功能:实时时钟显示,可完成充电桩的时钟时刻误差测试。 温湿度测量(选配件):可选配蓝牙温湿度计,通过蓝牙连接平板电脑,…

properties、yaml作为配置文件的特点

说明:在软件开发中,经常需要把一些配置写在文件中,如数据库配置、MyBatis配置等。这样,后续如果数据库参数有改动,就可以避免直接对代码做修改,只要修改配置文件中关于数据库的配置。关于配置文件的选择&am…

数据分析师,如何写好分析报告来体现数据价值

对数据敏感 数据分析,从名字中就能看出来,数据是数据分析师实际工作中的核心。 对数据敏感是对数据分析师的要求,也是数据分析师在日常工作中培养出来的独特技能,相对于其他岗位的员工,他们会更容易眼发现数据信息中…

SPC Control Chart Tools for .Net Crack

.Net 的 SPC 控制图工具 版本 3.1 具有集成表格支持、频率直方图、Cpk 和 Ppk 统计和缩放功能的 X-Bar R Chart 添加变量控制图(X-Bar R、X-Bar Sigma、Individual Range、Median Range、EWMA、MA、MAMR、MAMS 和 CuSum 图)、属性控制图(p-…

【第三章:链路层】

目录 知识框架No.0 引言No.1 功能零、基本功能概念一、封装成帧1、字符计数法2、字符填充法3、零比特填充法4、违规编码法 二、透明传输三、差错控制1、位错1.1、奇偶校验码1.2、循环冗余码CRC2、帧错2.1、海明码 四、流量控制1、停止-等待协议2、滑动窗口协议2.1、后退N帧协议…

Mybatis 学习笔记总结

1.概念 2.开发环境搭建 2.1 开发环境 2.2 创建Maven工程 <!--junit测试--><dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope>&l…

【P56】JMeter 响应时间图(Response Time Graph)

文章目录 一、响应时间图&#xff08;Response Time Graph&#xff09;参数说明二、准备工作三、测试计划设计 一、响应时间图&#xff08;Response Time Graph&#xff09;参数说明 可以以图形的方式查看和分析各事务和取样器的响应时间 使用场景&#xff1a;用于评估测试结…

ASEMI代理英飞凌TLE4250-2G汽车级线性稳压器

编辑-Z TLE4250-2G参数描述&#xff1a; 型号&#xff1a;TLE4250-2G 输入电压VI&#xff1a;45V 输出电压VQ&#xff1a;40V 结点温度Tj&#xff1a;-40~ 150℃ 储存温度Tstg&#xff1a;-50~150℃ 输出电容器要求CQ&#xff1a;1F 连接到焊接点RthJSP&#xff1a;30K…

简单使用feign

feign是一款非常好用的&#xff0c;能直接把我们省去端口号的编写&#xff0c; 下面直接开始&#xff0c;需要有一定的SpringCloud的基础&#xff0c;不然可能看不明白&#xff0c;我这里很多都是关键步骤。敬请原谅。 首先我们需要引入feign的依赖 <!-- 引入openfiegn-->…

开发技术-使用 JDB 调试

Java 调试器&#xff08;JDB&#xff09;是 JDK 内置的命令行工具。从调试的指令和命令行接口两方面看的话&#xff0c;JDB 至少从概念上是 GNU 调试器&#xff08;GDB&#xff0c;受 Unix DB 的影响&#xff09;的继承者。 示例&#xff1a; public class SimpleDebugging {p…

C++ String类(上篇)

绪论 放弃时间的人&#xff0c;时间也会放弃他。——莎士比亚 &#xff1b; 本篇章是关于string类内一些函数的介绍以及使用方法&#xff0c;都是我们编程必须掌握的基础&#xff01; ​ 全文共7000字左右. 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看&…

点亮创意灯,用Firefly Beta绘制生动有趣的成语故事!

1、打开链接&#xff1a; Adobe Firefly 2、点击generate按钮。 3、输入需要生成的成语描述&#xff0c;英文的。 比如我们要画守株待兔&#xff1a; An ancient Chinese farmer, lying under a big tree, waiting for a rabbit to run over 4、点击fresh按钮。 5、下载其…

(MIT6.045)自动机、可计算性和复杂性-图灵机

有穷自动机(FA)对有限存储量设备是比较好的模型&#xff0c;下推自动机对无限存储设备是较好的模型&#xff08;但是其存储只能用后进先出的栈模式来使用。&#xff09;这两个模型过于局限&#xff0c;不能作为通用模型。 图灵机 和FA相似&#xff0c;但是图灵机有无限的存储…

中央商务区对区域空间结构的影响机制

中央商务区&#xff08;CBD&#xff09;是经济发展到一定阶段后的必然产物&#xff0c;它已经成为城市或国家最重要的经济增长驱动器。中央商务区的形成过程本身即是区域空间结构的变化过程&#xff0c;经济活动在空间上的集聚与分散形成各类产业的集聚体&#xff0c;区域经济活…

ROS学习——通信机制(话题通信①—发布方实现)

2.1 话题通信 Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 040话题通信(C)1_发布方框架_Chapter2-ROS通信机制_哔哩哔哩_bilibili 一、ROS 中的基本通信机制主要有如下三种实现策略 话题通信(发布订阅模式服务通信(请求响应模式)参数服务器(参数共享模式) 二、…

引领618首波爆发!实在RPA数字员工与海尔等品牌共赢全域增量

作为全面放开之后的首个现象级电商大促&#xff0c;今年618的重要性不言而喻。如何在“毛遂自荐”的大促秀场中&#xff0c;满足甚至超过消费者购物需求&#xff0c;成为每个品牌商家的必修课。 疫情的催化和直播间强互动属性&#xff0c;越来越多消费者倾向直播购物&#xff0…

在通讯方面对讲机比微信更有优势吗?

对讲机和微信属于不同的通信工具&#xff0c;它们在某些方面都有着各自的优势。那么在通讯方面对讲机比微信更有优势吗&#xff1f;下面河南宝蓝小编为大家详细介绍下。 一、即时与实时通信&#xff1a; 对讲机作为一种即时通信工具&#xff0c;能够立即与其他用户进行实时语…

vue项目中el-upload 组件添加token的方法

在使用el-upload的时候&#xff0c;上传文件到服务器&#xff0c;有时候后台要求上传token&#xff0c;怎么处理呢&#xff1f;以下是一个示例。 效果图 template中片段 <el-dialog :modal-append-to-body"false" title"上传文件" :visible.sync"…

轻巧舒适的挂耳式耳机,更轻更好听,塞那Z30S Pro Max上手

入耳式的蓝牙耳机戴久了&#xff0c;总感觉很不舒服&#xff0c;现在市面上又有了很多设计新颖的耳机类型&#xff0c;像是我上周新换的这款sanag塞那Z30S Pro Max&#xff0c;就是一种不入耳的开放式耳机&#xff0c;做得还十分轻巧&#xff0c;带来了更加舒适的佩戴体验&…

调试记录-USB异常断开调试

问题描述 平台&#xff1a;rk3228 android7.1 问题&#xff1a;板子上有一个USB 4G模块&#xff0c;模块不是用标准的USB接口&#xff0c;而是M2接口。接着4G模组开机是可以正常工作的&#xff0c;但是只要点开任意一个app&#xff0c;就会出现设备断开&#xff0c;之后再重新…