AOSP 6.0, инициализируйте процесс, попробуйте распечатать стек вызововC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 AOSP 6.0, инициализируйте процесс, попробуйте распечатать стек вызовов

Сообщение Anonymous »

Сейчас я изучаю код aosp 6.0.
Когда я читаю код процесса инициализации, который находится по пути system/core/init/, я хочу напечатать функцию стек вызовов.
Я пытаюсь написать код на init.cpp

Код: Выделить всё

#include 

android::CallStack stack;
stack.update();
stack.log("TomYeo : CallStackDemo");
У меня ошибка ссылки.

Код: Выделить всё

system/core/libutils/CallStack.cpp:43: error: undefined reference to 'Backtrace::Create(int, int, BacktraceMap*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Насколько я понимаю
  • Код: Выделить всё

    CallStack
    определены в system/core/libutils
  • Код: Выделить всё

    Backtrace::Create
    определены в system/core/libbacktrace
  • система/core/init/Android.mk зависит от STATIC LIB : libutils
  • Система/core/libutils/Android.mk зависит от ОБЩЕЙ LIB : libbacktrace
По моему мнению, соединение не должно быть неудачным.

С другой стороны, я попробуйте проверить флаг Backtrace::Create в файле libbacktrace.so, полюбите его.

Код: Выделить всё

$ objdump -T libbacktrace.so | grep "Create"
000050c9 g    DF .text  00000056  Base        _ZN12BacktraceMap6CreateEib
00003341 g    DF .text  00000068  Base        _ZN9Backtrace6CreateEiiP12BacktraceMap

  • У меня есть часы: трассировка стека вызовов метода печати AOSP
  • У меня есть часы: https://yongbingchen.github .io/blog/2013/05/09/dump-stack-in-android-native-c-code/
Насколько я понимаю, у меня не получилось точка - файл сборки. и я не знаю, как это исправить.
в system/core/init/Android.mk Я пробовал много раз, список попыток: всегда получалась одна и та же ссылка, ошибка

Код: Выделить всё

system/core/libutils/CallStack.cpp:43: error: undefined reference to 'Backtrace::Create(int, int, BacktraceMap*)'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
затем я попробовал запустить команду сборки вручную и обнаружил:
  • это будет сборка успешна, когда мое руководство выполняет команду с полным путем к libbacktrace.so
  • но я не знаю, как добавить полный путь к файлу libbacktrace.so с помощью файла mk
  • По пути сначала соберите все, бросить компоновщик не удалось.

    выполнить вручную init build comman; командная строка внизу
  • перестроить с последним результатом сборки, сборка успешна
  • но записать результат на устройство, не удается повторно запустить ОС Android . перезапуск безлимитного устройства.

Код: Выделить всё

prebuilts/misc/linux-x86/ccache/ccache prebuilts/clang/linux-x86/host/3.6/bin/clang++
-nostdlib
-Bstatic
-static
-Wl,--gc-sections
-o
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/LINKED/init

# it will build success ,  w h e n   m y   m a n u a l   e x e c u t e   t h e   c o m m a n d   w i t h   t h e   l i b b a c k t r a c e . s o     f u l l   p a t h < b r   / >   #   b u t   i   d o n ' t   k n o w   h o w   t o   a d d   t h e   l i b b a c k t r a c e . s o   f i l e   f u l l   p a t h   b y   m k   f i l e < b r   / >   / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / l i b / l i b b a c k t r a c e . s o   < b r   / > < b r   / >   - L < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / l i b   < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / l i b / c r t b e g i n _ s t a t i c . o       < b r   / >   - W l , - z , n o e x e c s t a c k < b r   / >   - W l , - z , r e l r o < b r   / >   - W l , - z , n o w < b r   / >   - W l , - - b u i l d - i d = m d 5 < b r   / >   - W l , - - w a r n - s h a r e d - t e x t r e l < b r   / >   - W l , - - f a t a l - w a r n i n g s < b r   / >   - W l , - - i c f = s a f e < b r   / >   - W l , - - h a s h - s t y l e = g n u < b r   / >   - W l , - - n o - f i x - c o r t e x - a 8       < b r   / >   - t a r g e t   a r m - l i n u x - a n d r o i d e a b i < b r   / >   - B p r e b u i l t s / g c c / l i n u x - x 8 6 / a r m / a r m - l i n u x - a n d r o i d e a b i - 4 . 9 / a r m - l i n u x - a n d r o i d e a b i / b i n     < b r   / >   - W l , - - e x c l u d e - l i b s , l i b u n w i n d _ l l v m . a < b r   / >   - W l , - - n o - u n d e f i n e d             < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / E X E C U T A B L E S / i n i t _ i n t e r m e d i a t e s / b o o t c h a r t . o   < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / E X E C U T A B L E S / i n i t _ i n t e r m e d i a t e s / b u i l t i n s . o   < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / E X E C U T A B L E S / i n i t _ i n t e r m e d i a t e s / d e v i c e s . o   < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h a m m e r h e a d - e n g / b u i l d _ o u t / t a r g e t / p r o d u c t / h a m m e r h e a d / o b j / E X E C U T A B L E S / i n i t _ i n t e r m e d i a t e s / i n i t . o   < b r   / >             / V o l u m e s / B e y o u r s e l f / A O S P / a n d r o i d - 6 . 0 . 0 _ r 1 . t m p / a o s p _ h ammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/keychords.o
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/property_service.o
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/signal_handler.o
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/ueventd.o
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/ueventd_parser.o
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/EXECUTABLES/init_intermediates/watchdogd.o
-Wl,--whole-archive
-Wl,--no-whole-archive
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libutils_intermediates/libutils.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libinit_intermediates/libinit.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libfs_mgr_intermediates/libfs_mgr.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libsquashfs_utils_intermediates/libsquashfs_utils.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/liblogwrap_intermediates/liblogwrap.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libbase_intermediates/libbase.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libext4_utils_static_intermediates/libext4_utils_static.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libutils_intermediates/libutils.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/liblog_intermediates/liblog.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libselinux_intermediates/libselinux.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libmincrypt_intermediates/libmincrypt.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libc++_static_intermediates/libc++_static.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libdl_intermediates/libdl.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libsparse_static_intermediates/libsparse_static.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libz_intermediates/libz.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libunwind_llvm_intermediates/libunwind_llvm.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libdl_intermediates/libdl.a
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libcompiler_rt-extras_intermediates/libcompiler_rt-extras.a
-Wl,--start-group
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/STATIC_LIBRARIES/libc_intermediates/libc.a     prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9.x-google/../../../../arm-linux-androideabi/lib/libatomic.a   prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/../lib/gcc/arm-linux-androideabi/4.9.x-google/libgcc.a
-Wl,--end-group
/Volumes/Beyourself/AOSP/android-6.0.0_r1.tmp/aosp_hammerhead-eng/build_out/target/product/hammerhead/obj/lib/crtend_android.o

Может ли кто-нибудь попытаться мне помочь?


Подробнее здесь: https://stackoverflow.com/questions/788 ... call-stack
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»