Анализ дампа ядра ошибки segfault в Andoid - PullRequest
0 голосов
/ 25 октября 2019

У меня есть программа, скомпилированная со стандартным компилятором Android LLVM, работающая на Android. Теперь где-то в моем коде есть досадная ошибка segfault, которую я должен найти.

Мне удалось сгенерировать дампы ядра с помощью

 ulimit -c unlimited

Сборка с -gfull, чтобы получить все отладочные файлы. я могу получить информацию

Andoid.bp

cflags: [
    "-Wall",
    "-Wextra",
    "-Werror",
    "-gfull",
    "-Wno-sign-compare",
    "-Wno-unused-variable",
    "-fexceptions",
    "-Wno-unused-function",
],

gdb

Это сообщение об ошибке при чтении ядра с помощью gdb $ANDROID_BUILD_TOP/out/target/product/hikey960/system/bin/program -core=core

 Reading symbols from ...bin/program...Reading symbols from /home/simson/work4/out/target/product/hikey960/system/bin/program...(no debugging symbols found)...done.
(no debugging symbols found)...done.

символы отладки не найдены заставляет меня поверить, что не было достаточно символов отладки, и чтение дальше

warning: Couldn't find general-purpose registers in core file.
warning: Unexpected size of section `.reg2' in core file.
Core was generated by `program'.
warning: Couldn't find general-purpose registers in core file.
warning: Unexpected size of section `.reg2' in core file.

#0  <unavailable> in ?? ()
(gdb) backtrace 
#0  <unavailable> in ?? ()
Backtrace stopped: not enough registers or memory available to unwind further
(gdb) 

звучит так, как будто не все, что мне нужнов дампе ядра либо.

lldb

Запуск lldb $ANDROID_BUILD_TOP/out/target/product/hikey960/system/bin/program -core=core для анализа дампа ядра дает дополнительную информацию, но не намного

(lldb) target create "out/target/product/hikey960/system/bin/program" --core "core"
Core file 'core' (aarch64) was loaded.
(lldb) bt
* thread #1, name = 'program', stop reason = signal SIGSEGV
  * frame #0: 0x0000000000000000
    frame #1: 0x00000074605388f8
(lldb)

Что еще я могу сделать, чтобы получить дамп ядра, который покажет некоторые подсказки об этом сбое?

...