Как отладить нативную библиотеку Android в затмении с помощью ARM DS-5, не сходя с ума? - PullRequest
6 голосов
/ 15 января 2012

Я призываю ниндзя отладки Android NDK здесь!

Я пробовал так много учебников по отладке нативного кода Android, что не могу вспомнить их все.Теперь я пытаюсь заставить ARM DS-5 работать.Я заставил его работать с примерами Android NDK, где основная активность загружает библиотеку.Лагги, но работает.

Но мой проект немного сложен.Моя основная активность имеет кнопку, когда я нажимаю на нее, запускается SubActivity и загружается собственная библиотека.Когда я просто пытаюсь использовать отладчик DS-5, когда загружается основная активность, я предполагаю, что отладчик пытается подключиться к lib, но терпит неудачу, говоря:

Execution stopped at: 0xAFD0C52C
Connected to unknown platform
0xAFD0C52C   POP      {r4,r7}
file "D:\workspace\Project\bin\app_process"
WARNING(IMG53): app_process has no line debug information 
add-symbol-file "D:\workspace\Project\bin\libc.so"
Loading library symbols: libc.so
WARNING(IMG53): libc.so has no line debug information 
Execution stopped at: 0xAFD0C748
In thread 2 (OS thread id 7606)
In __futex_syscall3 (no debug info)
add-symbol-file "D:\workspace\Project\obj\local\armeabi\libName.so"
Execution stopped at: 0xAFD0C748
In thread 3 (OS thread id 7607)
Execution stopped at: 0xAFD0BFFC
In thread 4 (OS thread id 7608)
In __rt_sigtimedwait (no debug info)
Execution stopped at: 0xAFD0B854
In thread 5 (OS thread id 7609)
In select (no debug info)
Execution stopped at: 0xAFD0C748
In thread 6 (OS thread id 7610)
In __futex_syscall3 (no debug info)
Execution stopped at: 0xAFD0B70C
In thread 7 (OS thread id 7611)
In __ioctl (no debug info)
Execution stopped at: 0xAFD0B70C
In thread 8 (OS thread id 7612)
Execution stopped at: 0xAFD0C52C
In thread 1 (OS thread id 7605)
In epoll_wait (no debug info)
0xAFD0C52C   POP      {r4,r7}
WARNING(CMD454): The shared library D:\workspace\Project\obj\local\armeabi\libName.so is currently not loaded by the application so the request has been pended
cd "D:\workspace"
Working directory "D:\workspace"
directory "D:\workspace\Project"
Source directories searched: D:\workspace\Project;$cdir;$cwd;$idir
break -d -p "D:\workspace\Project\jni\Name.cpp":525
WARNING(CMD452-COR167): 
! Breakpoint 1 has been pended
! No compilation unit matching "D:/workspace/Project/jni/Name.cpp" was found
condition 1 
break-script 1 ""
ignore 1 0
break-stop-on-threads 1 
unsilence 1
Breakpoint 1 unsilenced

Я думаю, что он пытается подключиться к нативномуlib, когда начинается основная активность.Но библиотека загружается позже!

То, что я пробовал:

  • Установка точки останова Java в SubActivity после загрузки собственной библиотеки, затем присоединение отладчика DS-5.Но я получаю различные ошибки от Eclipse, говорящие о таймаутах, что угодно.
  • В настройках конфигурации отладки я не могу выбрать действие, которое должно вызывать отладку собственного кода, есть выпадающий список, но он отключен:

Сам вопрос: если моя библиотека не загружена основной деятельностью, как заставить DS-5 ждать загрузки библиотеки?

enter image description here

1 Ответ

0 голосов
/ 15 февраля 2012

Вам действительно нужно иметь точное поведение между отладочной и релизной версией?Если нет, загрузите библиотеку в основном упражнении, а также в отладочной версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...