#android-ndk #ndk-gdb
#android-ndk #ndk-gdb
Вопрос:
Отладка собственного приложения с использованием ndk-gdb. Я получаю следующее, когда я просматриваю код.
(gdb) n
Single stepping until exit from function my_current_function_name,
which has no line number information.
Итак, я не могу отладить приложение. Отладчик выполняет действия напрямую, пока не найдет функцию с информацией о номере строки.
Наш проект структурирован со всем основным кодом приложения в отдельном проекте, который сначала будет скомпилирован в общую библиотеку (файл .so). Затем мы создаем проект, который связывает общую библиотеку и генерирует файл APK. Код в папке JNI был создан с информацией о номере строки. Но код в отдельном проекте, который скомпилирован с использованием androideabi-gcc в файл .so, не содержит информации о номере строки.
Редактировать: Забыл упомянуть, что флаги «-g -ggdb» уже присутствуют в файле Makefile. Эта проблема видна, несмотря на эти флаги.
Комментарии:
1. Вы как бы отвечаете на свой собственный вопрос: the separate .so (LOCAL_PREBUILD_SHARED_LIBARIES?) не содержит информации о номере строки. Вы можете изменить флаги сборки для этого. итак, не так ли? Вы даже можете скомпилировать ее как статическую библиотеку, чтобы немного упростить отладку (при условии, что проблема, которую вы пытаетесь решить с
gdb
, не является специфичной для многопользовательской природы приложения).2. @AlexCohn Я уже добавил флаги -g и -ggdb (они были там в файле Makefile, до того, как он был добавлен моим коллегой, давным-давно). Но, тем не менее, я все еще не могу отлаживать с помощью ndk-gdb. Какие именно флаги я должен добавить, чтобы получить информацию о номере строки? Спасибо за ответ.
3. Возможно, информация об отладке была удалена. Попробуйте скопировать «толстую» копию файла .so из
SeparateProject/obj/local/armeabi
, а не изSeparateProject/libs/armeabi
.4. @AlexCohn Это была хорошая вещь, которую нужно было искать. Я только что попробовал это. Похоже, obj не поддерживает GDB. Он даже не может установить точки останова, если я использую файлы .so в каталоге obj. Не говоря уже о пошаговом просмотре кода.
5. Вы имеете в виду, что
lib
копия «более отлаживаемая»?