Проблемы с ndk-gdb - gdb.setup, putpkt, запуск PID

1

Я создал собственную библиотеку с ndk-build, и она отмечена как отлаживаемая в Android.mk. Если я войду в оболочку cygwin и запустим

cd (PROJDIR)
ndk-gdb --start --verbose

Я получаю следующее:

Android NDK installation path: /cygdrive/c/Android/android-ndk-r7b
Using default adb command: /cygdrive/c/Android/android-sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using ADB flags: 
Using auto-detected project path: .
Found package name: tiny.test2
ABIs targetted by application: armeabi
Device API Level: 15
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Found debuggable flag: true
Found device gdbserver: /data/data/tiny.test2/lib/gdbserver
Using gdb setup init: ./libs/armeabi/gdb.setup
Using toolchain prefix: /cygdrive/c/Android/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi
Found data directory: '/data/data/tiny.test2'
Found first launchable activity: .Test2Activity
Launching activity: tiny.test2/.Test2Activity
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell am start -n tiny.test2/.Test2Activity
Starting: Intent { cmp=tiny.test2/.Test2Activity }

## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell sleep 2
Found running PID: 0
ERROR: Could not extract PID of application on device/emulator.
       Weird, this probably means one of these:

         - The installed package does not match your current manifest.
         - The application process was terminated.

       Try using the --verbose option and look at its output for details.

Он не достигает приглашения gdb для отладки. Я попытался запустить его из Eclipse с точкой останова в файле.java перед первым вызовом функции C++, а затем, когда он находился в точке останова java, выполняющей ndk -g db, и он успешно обнаружил запуск PID 1977, подключенный к устройство через порт 5039 и вытащил libc.so с устройства, но затем получил Error while mapping shared library sections: libxxxx.so: No such file or directory " Error while mapping shared library sections: libxxxx.so: No such file or directory. Символы не найдены в info sharedLibrary.

Я добавил LOCAL_CFLAGS := -g -ggdb -O0 в Android.mk по совету другого вопроса и удалил строку из $(NDK_PATH)/build/core/build-binary.mk которая удаляет дополнительные функции из файл.so.

Если кто-то знает вероятную причину этих ошибок, пожалуйста, помогите.

благодаря

EDIT: ndk -g db говорит мне: "Этот GDB был настроен как" -host-i586-mingw32msvc --target = arm-elf-linux "" непосредственно перед "(не найдены отладочные символы)

Означает ли это что-нибудь?

EDIT2: запуск Symbol file not found share из gdb возвращает список Symbol file not found для всех.so файлов. Мне кажется, что я не создал файлы символов правильно или они не включены в путь поиска. Где они должны быть установлены?

EDIT3: Оказывается, я пропустил важную строку в dd dk ddk -g

   "The GDB prompt will be preceded by a long list of error messages,
   where gdb complains that it cannot find various system libraries
   (e.g. libc.so, libstdc++.so, liblog.so, libcutils.so, etc...)

   This is normal, because there are no symbol/debug versions of
   these libraries corresponding to your target device on your
   development machine. You can safely ignore these messages."

Это не решает проблему, но помогает понять, что это не ошибки.

  • 0
    +1 за EDIT3, я тоже это пропустил :)
Теги:
android-ndk
gdb
sigsegv

1 ответ

0

У вас есть env ANDROID_NDK_ROOT? которые ДОЛЖНЫ использовать как /cygdrive/c/Android/android-ndk-r7 * под Windows. Попробуйте добавить DNK_DEBUG = 1 для компиляции.. например: ndk -B uild DNK_DEBUG = 1 -B V = 1

Кроме того, убедитесь, что у вас есть как gdbserver, так и gdb.set в папке libs/$ (Target-ABI)/

надежда может помочь вам.

  • 0
    echo $ANDROID_NDK_ROOT /cygdrive/c/Android/android-ndk-r7c/ перекомпилирован с помощью ndk-build DNK_DEBUG = 1 -BV = 1, собран без ошибок. проверил содержимое libs / armeabi. ndk-gdb выдает тот же вывод, не может найти символы отладки.
  • 0
    как вы можете видеть в вопросе, gdb может найти gdbserver и gdb.setup, но, используя аргумент --start, он не находит PID. Если приложение уже запущено, оно находит действительный PID, но не символы отладки в общих библиотеках. Есть идеи?
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню