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

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

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 убивает активность на экране во время обработки нативного кода?

1 Ответ

2 голосов
/ 15 апреля 2011

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

...