Трассировка стека вызовов метода печати AOSP - PullRequest
0 голосов
/ 23 января 2019

Мне нужно увидеть трассировку стека в коде 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. Решение из https://stackoverflow.com/a/28858941/10691263 работает нормально для проекта desctop после добавления флага -rdynamic. Однако после интеграции этого кода с 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.

...