当前位置: 首页 > news >正文

android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用

android 如何分析应用的内存(十五)——Visual Studio Code 调试Android 应用

在上一篇文章介绍了jdb调试java应用
接下来介绍用UI界面调试java应用,达到同jdb一样的效果。
同样的UI界面有很多选择,如Eclipse,Android Studio,Visual Studio Code.因为Android Studio的诸多不便,结合自身的使用习惯,这里推荐并介绍Visual Studio Code

安装必要的插件

在插件市场中,搜索Debugger for java,如下图
在这里插入图片描述

查看其requirements还需要安装一个插件:Language Support for Java™ by Red Hat
在插件市场中搜索,并安装它,如下图
在这里插入图片描述

  • Language Support for Java™ by Red Hat:代码搜索,上下文提示等功能。
  • Debugger for java:调试功能

当然也可以直接安装Extension Pack for Java包,它包含上面两个插件,以及其他java开发需要的插件

为了能够更加方便查看数据,可安装一个插件:Debug Visualizer。
在这里插入图片描述

Debug Visualizer可以用图形的方式,展示变量的关系

配置attach到目标进程

菜单->运行->打开配置
在这里插入图片描述

在配置文件中加入如下内容:

{"launch": {"configurations": [...{//debugger for java插件对应的一个名字。必须为java"type": "java",//给这个配置取的一个名字"name": "远程调试Android应用",//因为是远程调试,只能为attach"request": "attach",//远程调试的主机名,使用了adb forward 映射到了本地,因此为:localhost"hostName": "localhost",//远程调试的端口号,使用了adb forward映射到了5039"port": 5039,//需要调试的源代码文件//第一个是我们测试APP的源文件位置//第二个是http://t.csdn.cn/JBnld中下载的Android 12的源码"sourcePaths": ["/Users/biaowan/AndroidStudioProjects/Test_Malloc.old/app/src/main/java","/Users/biaowan/aosp/frameworks/base/core/java"]}]},
}

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

上图,前两个为android 如何分析应用的内存(四)——Visual studio code的LLDB中使用的调试配置。

开始测试

  1. 添加断点
    使用VSCode打开我们的测试APP的工程文件。然后打开MainActivity.java在
    onCreate处添加断点,然后进行查看。如下图
    在这里插入图片描述

  2. app启动时停止
    按照android 如何分析应用的内存(十四)——jdb命令行里面的即时调试小段,运行如下代码:

adb shell am set-debug-app -w com.example.test_malloc

然后启动应用,此时应用应该停下,并显示:Waitting for Debugger
详细过程见:android 如何分析应用的内存(十四)——jdb命令行

  1. 转发端口
    运行下面的命令,将Android设备内部的端口,转发到本机5039
pid=($(adb shell ps -A |grep -i  malloc)) ; echo ${pid[2]};adb forward tcp:5039 jdwp:${pid[2]};
  1. 运行VSCode的调试
    使用快捷键command+p 进入文件搜索框,输入:debug加上空格。选中对应的调试即可。
    在这里插入图片描述

一切正常,那么vscode将会停在我们的断点处,如下:
在这里插入图片描述

如上,几乎可以看到平时调试需要用到的所有东西。如

  1. 查看,修改变量
  2. 添加,删除watchpoint
  3. 切换栈帧
  4. 暂停单个线程
  5. 捕获异常

但,vscode的debugger插件,并没有提供直接运行jdb命令的接口。在其控制台中,只能执行表达式。如下
在这里插入图片描述

故障排除

问题:如果在调试控制台中,不能正确执行表达式

解决:

  • 切换栈帧和变量
  • 切换插件版本,或者更新为最新

Debug Visualizer查看数据结构

在前面安装了第三个插件Debug Visualizer,它可以用来查看数据结构。可以在watchpoint中出现的都可以查看,如下。

  1. command+shitf+p:打开命令输入框

  2. 键入:Debug Visualizer:New View
    在这里插入图片描述

  3. 然后在新打开的UI框中,输入一个需要查看的变量。如下图
    在这里插入图片描述

调整大小,我们可以很清晰的看到各个变量之间的关系

注意:Debug Visualizer目前只能查看当前栈帧的变量

至此,VSCode的java调试,介绍完毕。

这里需要解释一下,为何没有介绍Android Studio的java调试。就我目前的使用习惯来看。Android Studio非常适合应用开发者。但存在如下几点不足

  • 调试别人应用只有源码,无法编译时,调试困难,如原生应用
  • Android studio运行异常卡顿

故此,不管是应用开发者还是Framework开发者,这里都推荐使用VS code进行调试

下一个小节,将会介绍怎么查看Android的堆内存。似乎到了Android应用最关键的时刻了。敬请期待

相关文章:

android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用

android 如何分析应用的内存(十五)——Visual Studio Code 调试Android 应用 在上一篇文章介绍了jdb调试java应用 接下来介绍用UI界面调试java应用,达到同jdb一样的效果。 同样的UI界面有很多选择,如Eclipse,Android …...

宁波银行最新内推码 MK4913

宁波银行最新内推码 MK4913 内推码: MK4913 内推二维码 : 网申路径: 网页端:登录宁波银行招聘官网: https://zhaopin.nbcb.com.cn 选择【校园招聘】-【招聘岗位】手机端:关注【宁波银行招聘】公众号&a…...

postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

前言: MySQL数据库和postgresql数据库之间的差异并不多,这里的差异指的是对SQL语言的支持两者并不大,但底层的东西差异是非常多的,例如,MySQL的innodb引擎概念,数据库用户管理,这些和postgresq…...

【Python从小白到高手】---函数基础

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【Python小白从入门到精通】🎈 本专栏旨在分享学习Python的一点学习心得,欢迎大家在评论区讨论💌 目录…...

postman----传参格式(json格式、表单格式)

本文主要讲解postman使用post请求方法的2中传参方式:json格式、表单格式 首先了解下,postman进行接口测试,必须条件是: ♥请求地址 ♥请求协议 ♥请求方式 ♥请求头 ♥参数 json格式 先看一下接口文档,根据接口文档&…...

Uni-Dock:GPU 分子对接使用教程

github文件下载: git clone https://github.com/dptech-corp/Uni-Dock.git cd Uni-Dock/example/screening_test wget https://github.com/dptech-corp/Uni-Dock/releases/download/1.0.0/unidock 将此文件加入到全局变量中 chmod x unidock sudo mv unidock /…...

【Python】数据分析+数据挖掘——掌握Python和Pandas中的单元格替换操作

1. 前言 数据处理和清洗是数据分析和机器学习中至关重要的步骤。在数据处理过程中,我们经常需要对数据集进行清洗和转换,其中单元格替换是一个常用的技术。Python作为一种功能强大且灵活的编程语言,为数据处理提供了丰富的工具和库。Pandas库…...

Godot 4 源码分析 - 增加格式化字符串功能

Godot 4的主要字符串类型为String,已经设计得比较完善了,但有一个问题,格式化这块没怎么考虑。 String中有一个format函数,但这个函数只有两个参数,这咋用? String String::format(const Variant &va…...

C#中XML文档与Treeview控件操作的数据同步

在前文《C#使用XML和Treeview结合实现复杂数据采集功能》中,使用Treeview展示了XML的数据,问题是如果在Treeview上进行了操作,怎样同步更改XML数据的内容呢? 这个问题看似简单,实现起来有一点小麻烦。 要实现的操作功能…...

【Java Web基础】mvn命令、Maven的安装与配置

本文极大程度上来自Maven安装(超详解),但是担心安的过程中遇到什么不一样的问题,顺便加深印象,所以还是打算自己弄一篇。 目录 第一步:Download Maven第二步:解压与安装2.1 解压2.2 安装 第一步:Download …...

加强Web应用程序安全:防止SQL注入

数据库在Web应用程序中存储和组织数据时起着至关重要的作用,它是存储用户信息、内容和其他应用程序数据的中央存储库。而数据库实现了高效的数据检索、操作和管理,使Web应用程序能够向用户提供动态和个性化的内容。然而,数据库和网络应用程序…...

【云原生】k8s中Contrainer 生命周期回调/策略/指针学习

个人主页:征服bug-CSDN博客 kubernetes专栏:kubernetes_征服bug的博客-CSDN博客 目录 1 容器生命周期 2 容器生命周期回调/事件/钩子 3 容器重启策略 4 自定义容器启动命令 5 容器探针 1 容器生命周期 Kubernetes 会跟踪 Pod 中每个容器的状态&am…...

electron+vue3全家桶+vite项目搭建【25】使用electron-updater自动更新应用

文章目录 引入实现效果实现步骤引入依赖配置electron-buidler文件封装版本升级工具类主进程调用版本更新校验渲染进程封装方法调用 测试版本更新 引入 demo项目地址 electron-updater官网 我们不可能每次发布新的版本都让用户去手动下载安装最新的包,而是应用可以…...

SQL 表别名 和 列别名

列表名 列表名之后 order by 可以用别名 也可以用原名, where 中不能用别名的 SQL语句执行顺序: from–>where–>group by -->having — >select --> order 第一步:from语句,选择要操作的表。 第二步&#xff1…...

面试之快速学习c++11-函数模版的默认模版参数,可变模版,tuple

//学习地址&#xff1a; http://c.biancheng.net/view/3730.html 函数模版的默认模版参数 在 C98/03 标准中&#xff0c;类模板可以有默认的模板参数&#xff0c;如下&#xff1a; template <typename T, typename U int, U N 0> struct TestTemplateStruct {};但是…...

Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】

一、VsCode 常见的配置 1、取消更新 把插件的更新也一起取消了 2、设置编码为utf-8&#xff1a;默认就是了&#xff0c;不用设置了 3、设置常用的开发字体&#xff1a;Consolas, 默认就是了&#xff0c;不用设置了 字体对开发也很重要&#xff0c;不同字体&#xff0c;字母形…...

源码编译安装gcc

摘要&#xff1a; 在编译开源的FunASR项目的C代码时&#xff0c;可能要求的gcc版本不符合&#xff0c;需要升级gcc版本&#xff0c;但是从网上搜索升级gcc方式&#xff0c;大部分都是通过简单的yum命令方式升级&#xff0c;我也尝试了这个方式&#xff0c;这种方式并不能升级到…...

pc文件上传

1.代码&#xff1a; <template><div><el-upload:multiple"true":auto-upload"true":headers"headers":action"uploadFileUrl":before-upload"handleBeforeUpload":on-error"handleUploadError":o…...

Vue3_对响应式对象解构赋值之后失去响应性

官网toRefs() :响应式 API&#xff1a;工具函数 | Vue.js toRefs 在调用时只会为源对象上可以枚举的属性创建 ref。如果要为可能还不存在的属性创建 ref&#xff0c;请改用 toRef。 setup(){const state reactive({name:"张三"age:14})const stateAsToRefs toRef…...

3d 地球与卫星绕地飞行

1 创建场景 2 创建相机 3 创建地球模型 4 创建卫星中心 5 创建卫星圆环及卫星 6 创建控制器 7 创建渲染器 <template><div class"home3dMap" id"home3dMap"></div> </template><script> import * as THREE from three impo…...

终极空洞骑士模组管理器:用Scarab实现10倍效率提升的完整指南

终极空洞骑士模组管理器&#xff1a;用Scarab实现10倍效率提升的完整指南 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经为《空洞骑士》安装模组时感到头疼&#x…...

ConvNeXt 改进 :ConvNeXt添加可变形卷积(DCNv2,CVPR 2018),实现高效涨点,二次创新CNBlock结构 ,独家首发

本文教的是方法,也给出几种改进方法,二次创新结构,百变不离其宗,一文带你改进自己模型,科研路上少走弯路。 前言 DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的Co…...

MXene基单原子催化剂在电催化CO2还原中的电子结构调控与性能优化

1. MXene基单原子催化剂为何能成为CO2还原的"黑马"&#xff1f; 在碳中和背景下&#xff0c;电催化CO2还原技术就像一位"化学魔术师"&#xff0c;能把温室气体变废为宝。而MXene材料凭借其独特的层状结构和导电性&#xff0c;正成为这场魔术表演的明星道具…...

Rocky Linux 9.4 Minimal安装后必做的10件事:安全加固、性能优化与开发环境搭建

Rocky Linux 9.4 Minimal安装后必做的10件事&#xff1a;安全加固、性能优化与开发环境搭建 当你完成Rocky Linux 9.4 Minimal的安装&#xff0c;面对那个极简的命令行界面时&#xff0c;可能会感到一丝茫然。这个"裸"系统虽然轻量&#xff0c;但距离生产环境或高效开…...

OpenCore Legacy Patcher:终极指南让老旧Mac焕然新生

OpenCore Legacy Patcher&#xff1a;终极指南让老旧Mac焕然新生 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方放弃支持的老旧Mac&a…...

终极Redis可视化工具:Another Redis Desktop Manager完全使用指南

终极Redis可视化工具&#xff1a;Another Redis Desktop Manager完全使用指南 【免费下载链接】AnotherRedisDesktopManager &#x1f680;&#x1f680;&#x1f680;A faster, better and more stable Redis desktop manager [GUI client], compatible with Linux, Windows, …...

SPM12实战:手把手教你搞定fMRI数据预处理(从时间矫正到空间平滑)

SPM12实战&#xff1a;零基础入门fMRI数据预处理全流程解析 第一次接触功能磁共振成像&#xff08;fMRI&#xff09;数据分析时&#xff0c;面对SPM12复杂的界面和晦涩的术语&#xff0c;很多新手都会感到无从下手。这篇文章将带你从零开始&#xff0c;用最直观的方式掌握fMRI数…...

实战演练:基于快马平台与vscode codex思想,快速构建业务数据可视化仪表盘

今天想和大家分享一个实战经验&#xff1a;如何快速构建一个业务数据可视化仪表盘。这个需求其实挺常见的&#xff0c;很多公司都需要通过直观的图表来展示销售数据、用户行为等关键指标。我最近在InsCode(快马)平台上尝试了这个项目&#xff0c;整个过程比想象中顺利很多。 需…...

智能提取B站字幕:告别手动抄录的高效开源工具

智能提取B站字幕&#xff1a;告别手动抄录的高效开源工具 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为手动记录B站视频字幕而烦恼&#xff1f;BiliBiliC…...

千问3.5-2B与Dify平台结合:无需编码快速搭建AI应用

千问3.5-2B与Dify平台结合&#xff1a;无需编码快速搭建AI应用 1. 为什么需要低代码AI开发平台 想象一下&#xff0c;你是一家电商公司的运营负责人&#xff0c;每天需要处理大量客户咨询、生成商品描述、制作营销文案。传统方式要么需要雇佣专业团队&#xff0c;要么得自己学…...