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

Android Studio NDk调试(基于gradle-experimental插件与LLDB)

Android Studio NDk调试(基于gradle-experimental插件与LLDB) - 简书 (jianshu.com)

这篇文章是使用我上一篇文章Android Studio使用gradle-experimental构建NDK工程(无需Android.mk、Application.mk文件)的demo来讲解NDk的调试技巧。

1.开始前最好先看看我的另一片文章Android Studio使用gradle-experimental构建NDK工程(无需Android.mk、Application.mk文件),因为我这篇NDk调试教程,完全是基于上一篇文章的工程来进行的。另外如果是你本地的其他的NDK工程,确保你的NDK工程是基于gradle-experimental plugin构建NDK工程。因为LLDB调试引擎需要gradle-experimental plugin的支持。

2.我就基于我自己的gradle-experimental plugin构建NDK工程来讲解了。首先打开工程Gradle_Experimental_NDK,运行左边的app框,选择Edit configurations... 如下图所示:

Paste_Image.png

3.点击Edit configurations进入Debug configurations界面,点击左上角的+号,弹出下拉框,选择Android Native,如下图所示:

Paste_Image.png

4,点击Android Native进入,如下的界面,可以自己起一个Name名字,我起的是app-native ,Module选择app。

Paste_Image.png

注:如果你还没有安装LLDB会有如下错误提示,不用担心,只要点击fix,然后按照引导安装LLDB就行了。

Paste_Image.png

LLDB安装完成,如下图:

Paste_Image.png

5.点击app-native界面的Debugger选项,选择Debug Type 为Native ,如下图所示:

Paste_Image.png

6.点击右下角的OK按钮,所有的配置都已经完成了,然后点击运行按钮左边的app框,可以看到除了app选项,还多了一个我们刚刚配置的app-native选项,选择app-native选项,然后在MyLibrary.c文件中加一个断点,点击debug按钮,程序运行到手机上之后,可以看到程序运行到断点处,停下来了,说明可以成功调试c/c++代码了,有图为证,请看下图:

运行前操作图:

Paste_Image.png

运行时到debug状态截图:

Paste_Image.png

7.看完了是不是觉得很简单,的确,gradle-experimental plugin插件和LLDB的配合使得NDK工程的构建和调试变得很简单。

资源下载:Demo



作者:zzyyppqq
链接:https://www.jianshu.com/p/178a2169b7ff
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • android studio调试c/c++代码
  • 在开发过程中使用 git rebase 还是 git merge,优缺点分别是什么?
  • Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
  • Windbg使用说明书
  • 使用Windbg查看CrashDump
  • 【无标题】windbg 分析dump文件
  • Dump文件有三种:完整内存转储,内核内存转储,小内存转储。System Properties中的高级选项中可以看到这些设置。
  • Analysing crash dump in windbg
  • 【无标题】使用VS调试DUMP文件
  • 使用VS调试Dump文件
  • 【无标题】dump解析入门-用VS解析dump文件进行排障
  • Crash Dump调试:Symbol Server/Source Server、PDB原理分析
  • [笔记]Ray Tracing with Cones
  • bundletool 工具使用
  • 123456789
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【391天】每日项目总结系列128(2018.03.03)
  • CSS 三角实现
  • Docker容器管理
  • download使用浅析
  • ESLint简单操作
  • export和import的用法总结
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • input实现文字超出省略号功能
  • k8s 面向应用开发者的基础命令
  • Laravel5.4 Queues队列学习
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 关于List、List?、ListObject的区别
  • ------- 计算机网络基础
  • 两列自适应布局方案整理
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 微服务入门【系列视频课程】
  • 延迟脚本的方式
  • 一道闭包题引发的思考
  • 用 Swift 编写面向协议的视图
  • scrapy中间件源码分析及常用中间件大全
  • #ifdef 的技巧用法
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • %check_box% in rails :coditions={:has_many , :through}
  • (9)目标检测_SSD的原理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (MATLAB)第五章-矩阵运算
  • (第二周)效能测试
  • (二)fiber的基本认识
  • (二十三)Flask之高频面试点
  • (转)用.Net的File控件上传文件的解决方案
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET MVC之AOP
  • .NET/C# 的字符串暂存池
  • .NET企业级应用架构设计系列之开场白
  • .NET与 java通用的3DES加密解密方法
  • .project文件
  • /etc/motd and /etc/issue
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题