Home

Awesome

unwinddaemon

CMAKE + NDK编译步骤

拉取本项目,然后执行下面的命令

git submodule init
git submodule update --remote

如果是想手工配置,则执行下面的脚本

./init-submodules.sh

编译执行下面的脚本即可,产物位于build文件夹,注意只有单个so,部分依赖为静态编译,具体请阅读CMakeLists.txt

记得先修改ANDROID_NDK路径,如果要编译Android 10的版本,请将ANDROID_PLATFORM修改为android-29

./build.sh

关于shim_files的构成:

本方案编译实现主要参考了以下两个项目,感谢:

基于AOSP的编译步骤

使用

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