当前位置: 首页 > 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应用最关键的时刻了。敬请期待

http://www.lryc.cn/news/111377.html

相关文章:

  • 宁波银行最新内推码 MK4913
  • postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用
  • 【Python从小白到高手】---函数基础
  • postman----传参格式(json格式、表单格式)
  • Uni-Dock:GPU 分子对接使用教程
  • 【Python】数据分析+数据挖掘——掌握Python和Pandas中的单元格替换操作
  • Godot 4 源码分析 - 增加格式化字符串功能
  • C#中XML文档与Treeview控件操作的数据同步
  • 【Java Web基础】mvn命令、Maven的安装与配置
  • 加强Web应用程序安全:防止SQL注入
  • 【云原生】k8s中Contrainer 生命周期回调/策略/指针学习
  • electron+vue3全家桶+vite项目搭建【25】使用electron-updater自动更新应用
  • SQL 表别名 和 列别名
  • 面试之快速学习c++11-函数模版的默认模版参数,可变模版,tuple
  • Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】
  • 源码编译安装gcc
  • pc文件上传
  • Vue3_对响应式对象解构赋值之后失去响应性
  • 3d 地球与卫星绕地飞行
  • Opencv-C++笔记 (16) : 几何变换 (图像的翻转(镜像),平移,旋转,仿射,透视变换)
  • 第十次CCF计算机软件能力认证
  • 【敏捷开发】测试驱动开发(TDD)
  • 骑砍二 ATC MOD 使用教程与应用案例解析
  • python和c语言哪个好上手,c语言和python语言哪个难
  • 智能优化算法 | Matlab实现鲸鱼优化算法(Whale Optimization Algorithm)(内含完整源码)
  • Android随笔-VPN判断
  • 【黑马头条之kafka及异步通知文章上下架】
  • Modelsim打开后报unable to checkout a viewer license
  • 计算机视觉与图形学-神经渲染专题-Seal-3D(基于NeRF的像素级交互式编辑)
  • synchronized的底层实现原理