Android Native Code 手动调试
调试启动过程中的 Android Native Code Crash
记录一下,最后成功使用的工具是 lldb + lldb-server,不需要 root 权限。我最先尝试使用的是,gdb + gdb-server 在 attach 后总是 crash,总感觉指令集有点问题,尝试编译一个 target platform 是 arm64 的 gdb,但是也没有成功。要求调试的包需要设置 debuggable。 在设备上启动 lldb-server 首先是要把 lldb-server 推送到设备上,然后用包体的权限运行,然后让应用启动后等待调试。
在设备上启动 lldb-server
D:
cd D:\SDK\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang\11.0.5\lib\linux\aarch64
adb push lldb-server /data/local/tmp
adb shell chmod +x /data/local/tmp/lldb-server
adb shell run-as package_bundle_id killall -9 lldb-server
sleep 1
adb shell run-as package_bundle_id cp /data/local/tmp/lldb-server /data/data/package_bundle_id/
adb shell am start -D -n "package_bundle_id/android.app.NativeActivity"
adb shell run-as package_bundle_id sh -c '/data/data/package_bundle_id/lldb-server platform --server --listen unix-abstract:///data/data/package_bundle_id/debug.socket'"
lldb attach 到目标进程
adb shell run-as package_bundle_id ps
lldb
> platform select remote-android
> platform connect unix-abstract-connect:///data/data/package_bundle_id /debug.socket
> attach <pid>
jdb
adb shell run-as package_bundle_id ps
adb forward tcp:12345 jdwp:<pid>
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=12345
lldb 调试
关于权限问题:
root 用户直接设置全局 debuggable 试了没成功:
直接修改 apk 包 debuggable 权限:
直接修改 aab 包 debuggable 权限
Android Native Code 手动调试的更多相关文章
- NDK开发历程(一):android native code的调试方法
引用:http://www.cnblogs.com/ychellboy/archive/2013/02/22/2922683.html 使用NDK在android上做开发是一件“痛并快乐着”的差事,之 ...
- GDB + gdbserver 远程调试android native code
原文地址:GDB + gdbserver 远程调试android native code 作者:tq08g2z 以调试模拟器中的native library code为例. Host: ubuntuT ...
- ndk-gdb 对java/native code联合调试(升级版)
之前写过一篇 关于android native 开发,调试的文章(http://www.cnblogs.com/yaozhongxiao/archive/2012/03/13/2393959.html ...
- React Native 真机调试(iOS / Android)
React Native 真机调试(iOS / Android) https://reactnative.dev/docs/running-on-device https://developer.ap ...
- Android FrameWork 学习之Android 系统源码调试
这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...
- 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码
原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...
- Building Projects with Native Code
[Building Projects with Native Code] 1.安装Node(v4.0以上).Python2.JDK(v8.0以上). 添加 JAVA_HOME环境变量,指向 JDK 的 ...
- Android Studio xcode单步调试 WebRTC Android & iOS
mac环境 如何在 Android Studio 里单步调试 WebRTC Android 的 native 代码. WebRTC 代码下载 depot tools 是 chromium 代码库管理工 ...
- [转][android][利用JNI技术在Android中调用、调试C++代码]
在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过 ...
- Android native进程间通信实例-binder篇之——HAL层访问JAVA层的服务
有一天在群里聊天的时候,有人提出一个问题,怎样才能做到HAL层访问JAVA层的接口?刚好我不会,所以做了一点研究. 之前的文章末尾部分说过了service call 可以用来调试系统的binder服务 ...
随机推荐
- 解决pycharm中cv2报错问题,anaconda安装opencv
写在前面的话:cv2 报错是因为没安装opencv安装包所导致,并且在pycharm终端不可使用pip install cv2 进行安装! 如何解决cv2报错: 首先,值得注意的是在pycharm中, ...
- J V M大概理解
jvm的大致流程:他把一个Class文件 通过类加载机制 装载到jvm里面,然后放到不同的运行时数据区(Runtime Data Areas),通过编译器来编译. 第一部分,我们可以关注class文件 ...
- java 基本知识点
多线程 加载器 数据结构 内存模型 gc算法
- Sup, inf convolution for convex functions
Let $\Omega$ be a bounded convex domain in $\mathbb{R}^n$. $f:\Omega\rightarrow\mathbb{R}^n$. If $f$ ...
- GuzzleHttp示例
一般请求 $httpClient = new Client([ 'timeout' => 5 ]); $request = $httpClient->post("http://l ...
- docker的生命周期
所有博客仅用于自己学习记录,如有侵权请联系删除,文章来源于公开视频资料,如有需要请移步这里:https://www.bilibili.com/video/BV1o14y1w7b8?p=11&v ...
- 【JavaScript】setAttribute在添加事件时失效解决办法
HTML的表格行高亮,用JavaScript设置时总是在FireFox和谷歌浏览器中成功,但是在IE6,IE7中失败.最后发现是IE系列对DOM的setAttribute方法支持不好.如用: 1 tr ...
- 权昌TSC条码打印机终极使用教程与开发版本代码大全
本教程使用的打印机型号:TSC TTP-244 Plus 官方文档 一.TSC打印机安装 1.机器安装 根据官方快速安装指南安装打印机,此处不详细说明,也可以看视频教程,唯一需要注意的地方就是碳带的方 ...
- Win10微软官方镜像iso文件下载
1.转到下载页面2.按F12后点击小窗口左上角的手机图标3:刷新页面开始下载(win10.iso:链接)
- linux kali 报错Intel VT-x
报错原因:第一次安装虚拟机intel vt-x 处于禁用状态,没有启用 分析思路:找到 Intel vt - x 位置,并打开 .(intel - x在bios) 解决方法: 联想笔记本为例:进入bi ...