- 同步AOSP
- 在AOSP源码文件夹下创建
system/extras/unwinddaemon
文件夹 - 将本项目的
Android.bp
和main.cpp
放入上一步创建的文件夹 - 在AOSP源码文件夹下打开终端,执行下面的命令进行编译
. build/envsetup.sh lunch aosp_arm64-eng mmma system/extras/unwinddaemon
- 编译成功后,产物在
out/target/product/generic_arm64/system/bin/unwinddaemon
将out/target/product/generic_arm64/system/bin/unwinddaemon
推送到手机的/data/local/tmp
,授予可执行权限
然后执行/data/local/tmp/unwinddaemon
即可
hook_open_with_stack.py
是配合bcc修改使用的demo
bin/unwinddaemon
是预编译好的,但不一定兼容
bcc修改参见
原理,代码修改等,请查阅eBPF on Android之实现基于dwarf的用户态栈回溯
编译lib.cpp
得到的产物如下,在SeeFlowerX/stackplz中使用
ld-android.so
libbase.so
libc++.so
libdl.so
liblog.so
liblzma.so
libm.so
libstackplz.so
libunwindstack.so