Приложение с использованием NDK (нативный код) падает. Как я могу узнать почему?

1

Мое приложение использует NDK (4r-crystallax в моем случае) для получения изображений с камеры. Проблема в том, что она падает после нескольких минут работы. Я предполагаю, что могут быть некоторые утечки памяти или что-то в этом роде, но я не знаю, как узнать, где проблема. Это журнал об ошибке:

04-14 23:07:37.133: INFO/NATIVE CODE(14895): Detection percentage counted.
04-14 23:07:37.163: DEBUG/MDDetectorView(14895): Some debug info
04-14 23:07:37.193: DEBUG/dalvikvm(14895): GC_EXTERNAL_ALLOC freed 19 objects / 872 bytes in 27ms
04-14 23:07:37.283: INFO/NATIVE CODE(14895): Image to proccess loaded.
04-14 23:07:37.493: INFO/ActivityManager(92): Process com.motiondetector (pid 14895) has died.
04-14 23:07:37.493: DEBUG/CameraService(67): Client::~Client E (pid 67, client 0xad08)
04-14 23:07:37.503: INFO/WindowManager(92): WIN DEATH: Window{46590698 com.motiondetector/com.motiondetector.MDMenuActivity paused=false}
04-14 23:07:37.513: ERROR/CameraService(67): getClientFromCookie: client appears to have died

Любые идеи? Есть ли полезные инструменты, которые помогут мне найти ответ?

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

  • 0
    Вы пытались использовать GDB? Ndk поддерживает это, хотя это не очень просто.
Теги:
debugging
android-ndk
native-code
android-ndk-r4

1 ответ

2
Лучший ответ

Если вы используете NDK r5 или выше, вы можете использовать ndk-gdb script для запуска вашей программы и подключения к ней через GDB. Если ваш собственный код сбой, он должен опустить вас в командную строку GDB, где вы можете проверить область кода, которая вызывает проблему.

Ещё вопросы

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