- 首先需要有一部root手机(最好是pixel)或者android模拟器也行,然后[编译android源码和安装](https://aliyuque.antfin.com/xiaobao.spf/ad2gcp/agwlli?singleDoc# 《AOSP的编译和调试》)
- 新建一个android c++项目
- 软链接 art目录
1 | ln -s /Volumes/android/aosp/art . #.是当前项目工程 |
或者你可以在lldb中将源码目录映射到我们的工程
1 | settings set target.source-map /Volumes/android/aosp/art /Users/juneleo/demo/android-native-debug |
复制libart.so symbol
1
cp /Volumes/android/aosp/out/target/product/coral/symbols/apex/com.android.runtime.debug/lib64/libart.so symbols/libart.so
带符号的libart.so 在aosp 的out/target/product/coral/symbols/apex/com.android.runtime.debug/lib64/ 目录下
Run/Debug Configuration Debugger中的Debug Type配置为 Native Only
- 开始调试
- 断点
此时我们点击红框中的art代码,我们可以看到是一堆指令代码
- 接着我们把libart.so 符号文件告诉调试器
1 | add-dsym /Users/juneleo/demo/android-native-debug/symbols/libart.so |
或者也可以直接在Run/Debug Configuration Debugger 配置
- 重新debug