ndk-gdb с несколькими библиотеками - PullRequest
7 голосов
/ 09 сентября 2010

Я узнал об инструменте отладки «ndk-gdb» из Android NDK r4.Теперь я могу начать отладку примера hello-jni (хотя некоторые проблемы существуют).

Но для моих собственных приложений Android у меня есть несколько таких библиотек, которые можно использовать для сборки из большого количества файлов c / c ++.Я использовал для создания таких файлов с помощью ndk-build, а затем скопировал эти файлы в каталог $ PROJECT / libs, и он работает без отладки.Но теперь я хочу отладить один такой lib с помощью ndk-gdb.Когда я запускаю ndk-gdb, он жалуется, что таблица символов не загружена.

Я также копирую все эти файлы в $ PROJECT / bin / ndk / local / armeabi (похоже на каталог по умолчанию, где gdb пытается загрузить таблицу символов).И все же, это не работает.

Может быть, ndk-gdb не может отследить мои файлы после того, как я их скопирую?Или почему он не может загрузить таблицы символов, даже после того, как я скопирую их в $ PROJECT / bin / ndk / local / armeabi?

Кто-нибудь сталкивался с этой проблемой раньше?

Спасибомного!

1 Ответ

10 голосов
/ 25 сентября 2010

Я думаю, вы копируете их не в ту папку. Более старый NDK копировал файлы в папку bin; новый копирует их в папку obj, и именно здесь он указывает gdb на поиск символов.

Также убедитесь, что вы скопировали предварительно раздетые файлы .so в папку obj, а не те же файлы, которые копируете в папку libs: в процессе сборки файлы в папке libs были лишены символов и отладочной информации. Таким образом, вы захотите сохранить две копии каждого из ваших файлов .so: одну из папки libs для установки на устройстве Android и одну из папки obj для установки для GDB для получения символов.

Вы можете вместо копирования файлов отладки в папку obj в дереве приложения добавить другой каталог сборки obj / folder в путь поиска символов в gdb. ndk-build устанавливает файл gdb.setup, содержащий строку, начинающуюся с set solib-search-path . Вы можете поместить в эту строку разделенный двоеточиями путь, который включает все ваши целевые папки obj / local / what, и тогда gdb найдет символы.

...