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

这篇具有很好参考价值的文章主要介绍了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,如下图
android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

查看其requirements还需要安装一个插件:Language Support for Java™ by Red Hat
在插件市场中搜索,并安装它,如下图
android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

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

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

为了能够更加方便查看数据,可安装一个插件:Debug Visualizer。
android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

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

配置attach到目标进程

菜单->运行->打开配置
android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

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

{
    "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 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

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

开始测试

  1. 添加断点
    使用VSCode打开我们的测试APP的工程文件。然后打开MainActivity.java在
    onCreate处添加断点,然后进行查看。如下图
    android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

  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加上空格。选中对应的调试即可。
    android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

一切正常,那么vscode将会停在我们的断点处,如下:
android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

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

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

但,vscode的debugger插件,并没有提供直接运行jdb命令的接口。在其控制台中,只能执行表达式。如下
android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

故障排除

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

解决:

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

Debug Visualizer查看数据结构

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

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

  2. 键入:Debug Visualizer:New View
    android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

  3. 然后在新打开的UI框中,输入一个需要查看的变量。如下图
    android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用,android  内存分析,VSCode 远程调试,VSCode AOSP,VSCode 单步执行应用,Debug for Java,Debug Visuliaze

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

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

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

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

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

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

下一个小节,将会介绍怎么查看Android的堆内存。似乎到了Android应用最关键的时刻了。敬请期待文章来源地址https://www.toymoban.com/news/detail-628544.html

到了这里,关于android 如何分析应用的内存(十五)——Visual Studio Code 调试Android应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android 如何分析应用的内存(十二)——HWASan

    上一篇介绍了ASan,这次介绍ASan的加强版HWASan 从NDK r21和Android 10 开始,Android支持HWAsan。HWAsan仅仅支持arm64架构的设备。 HWASan需要系统的支持,因此,需要重新编译系统镜像。可以是android模拟器,也可以是真机。 本次实验,选择了Pixel3的真机作为演示。同时使用了android-12.0

    2024年02月15日
    浏览(36)
  • android 如何分析应用的内存(十一)——ASan

    接下来是,heap的第五大板块——ASan(Address Sanitizer)和HWASan(Hardware Address Sanitizer)。可以将其称为:地址清理器 与其说是Heap板块,不如说是debug板块。 ASan是一个集成在编译器中的工具,因此只需要在编译的时候设置好Flag即可。而HWASan则可以认为是ASan的plus版本。HWASan比

    2024年02月13日
    浏览(33)
  • android 如何分析应用的内存(九)——libc回调

    接上文,在前面文章中,介绍了bionic库提供的各种功能,其中包括: 自定义的malloc malloc hook malloc debug 接下来,介绍的是bionic库提供的libc回调功能,它可以通过代码获得所有的内存分配情况 。 前情提要:在使用libc回调的时候,依然需要打开malloc的调试功能,见上一篇文章中

    2024年02月12日
    浏览(32)
  • android 如何分析应用的内存(十七)——使用MAT查看Android堆

    前一篇文章,介绍了使用Android profiler中的memory profiler来查看Android的堆情况。 如Android 堆中有哪些对象,这些对象的引用情况是什么样子的。 可是我们依然面临一个比较严峻的挑战:不管是app开发者,还是内存分析者而言,堆中的对象,非常之多,不仅有Android 原生的类,还

    2024年02月13日
    浏览(65)
  • 如何在 Visual Studio Code 中同时打开多个项目?

    在日常的软件开发中,我们经常需要同时处理多个项目。Visual Studio Code(简称 VS Code)是一个流行的开发环境,提供了许多便捷的功能来支持多项目的管理和开发。本文将介绍如何在 VS Code 中同时打开多个项目,并提供相应的源代码示例。 打开 VS Code 并创建一个新窗口。 点击

    2024年02月05日
    浏览(64)
  • 如何在Visual Studio Code 中配置通义灵码

    如果需要在 Visual Studio Code 中使用通义灵码,必须完成通义灵码插件安装及阿里云账号登录。 有关详细信息,可查看快速开始。 查看快捷键 操作 macOS Windows 打开/关闭智能问答窗口 ⌘   ⇧   L Ctl   Shift   L 接受行间代码建议 Tab Tab 废弃行间代码建议 esc esc 查看上一个行间推

    2024年02月04日
    浏览(44)
  • Visual Studio Code 如何设置整体界面字体的大小?

    在某次操作中,我不小心误点了什么,导致 Visual Studio Code 界面的字体变小了很小,如下图所示: 我想把字体调整回来,该如何操作呢? 首先,第一步,打开设置: 第二步,进入工作区: 打开窗口: 修改参数: 可以看到,字体明显增大了!

    2024年02月12日
    浏览(47)
  • 如何在Visual Studio Code中使用GitHub Copilot

    GitHub Copilot 为多种语言和各种框架提供建议,但尤其适用于 Python、JavaScript、TypeScript、Ruby、Go、C# 和 C++。 以下示例使用的是 JavaScript,但其他语言的工作方式类似。 在 Visual Studio Code 中,创建一个新的 JavaScript (*.js) 文件。 在 JavaScript 文件中,键入以下函数标头。 GitHub Copi

    2024年02月05日
    浏览(66)
  • 如何在 Visual Studio Code 中切换到中文版

    Visual Studio Code (简称 VS Code) 是一款强大的跨平台代码编辑器,它支持多种编程语言和丰富的扩展插件。默认情况下,VS Code 是以英文界面显示的,但是你可以通过简单的步骤将其切换为中文版。本文将介绍如何在 Visual Studio Code 中将界面语言更改为中文。 步骤如下: 打开 Vi

    2024年02月04日
    浏览(65)
  • android 如何分析应用的内存(八)——Android 7.0以后的malloc debug

    接上文,介绍六大板块中的第三个————malloc调试和libc回调 上一篇文章中,仅仅是在分配和释放的时候,拦截对应的操作。而不能进一步的去检查内存问题。比如:释放之后再次使用指针,内存泄漏,内存损坏等等。 在这篇文章中,将会介绍malloc调试技术,它可以对nat

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包