AOSP打印方法调用堆栈跟踪

时间:2019-01-23 10:10:05

标签: c++ c android-source stack-trace android.mk

我需要查看AOSP C / C ++代码中的堆栈跟踪。我找到了一些解决方案,但所有解决方案都不能正确显示函数名称。

1. http://yongbingchen.github.io/blog/2013/05/09/dump-stack-in-android-native-c-code/的解决方案得出以下结果:
01-22 11:19:24.737 CallStack ( 3304): #00 pc 0004440b /system/lib/hw/bluetooth.default.so (dump_stack_android+42) 01-22 11:19:24.737 CallStack ( 3304): #01 pc 0008b7f5 /system/lib/hw/bluetooth.default.so (btif_gatt_check_encrypted_link+32) 01-22 11:19:24.737 CallStack ( 3304): #02 pc 0008870f /system/lib/hw/bluetooth.default.so 01-22 11:19:24.737 CallStack ( 3304): #03 pc 0007ea5f /system/lib/hw/bluetooth.default.so 01-22 11:19:24.737 CallStack ( 3304): #04 pc 00126c5f /system/lib/hw/bluetooth.default.so 01-22 11:19:24.737 CallStack ( 3304): #05 pc 00125673 /system/lib/hw/bluetooth.default.so 01-22 11:19:24.737 CallStack ( 3304): #06 pc 00126963 /system/lib/hw/bluetooth.default.so 01-22 11:19:24.737 CallStack ( 3304): #07 pc 00047313 /system/lib/libc.so (_ZL15__pthread_startPv+22) 01-22 11:19:24.737 CallStack ( 3304): #08 pc 00019e5d /system/lib/libc.so (__start_thread+6)

如您所见,从#02#06的行没有函数的名称

2.添加-rdynamic标志后,https://stackoverflow.com/a/28858941/10691263的解决方案可以很好地用于desctop项目。但是,在将此代码与AOSP集成之后,我得到了与先前示例相同的结果。
看起来bluetooth.default.so中的某些符号被隐藏了。我试图将-fvisibility中的Android.mk标志从hidden更改为default,但是收到以下编译错误: system/bt/btcore/src/hal_util.c:90: error: undefined reference to 'hw_get_module' clang++: error: linker command failed with exit code 1 (use -v to see invocation)

请帮助我找到一个解决方案,该解决方案将能够显示带有AOSP的所有函数名称的调用堆栈。

0 个答案:

没有答案