для более новой версии NDK (я использую r7c), вы можете создать отладочную версию с помощью
- , добавив флаг
android:debuggable="true"
к тегу <Application>
в AndroidManifest.xml
- invoke
ndk-build
с NDK_DEBUG=1
(флаг NDK_DEBUG не требуется при запуске ndk-build с оболочкой unix)
в Windows, все становится немного сложнее, потому что для использования ndk-gdb
вам все равнотребуется bash (или cygwin) начиная с NDK r7c, но ndk-build
, работающий в cygwin bash, столкнется с проблемой разрешений, если вы когда-либо будете использовать какую-либо из предварительно собранных статических библиотек
, мое решение на машине с Windows -
- добавьте флаг
android:debuggable="true"
к тегу <application
в AndroidManifest.xml
(как указано выше) - в cmd (командная строка Windows): вызовите
ndk-build
с NDK_DEBUG=1
- в cygwin bash: запустите
ndk-gdb
для быстрого начального исследования нативной библиотеки, создайте простое действие с одной кнопкой для запуска функции входа в библиотеку и loadLibrary
в действиинапример:
class MyActivity extends Activity {
static {
System.loadLibrary("mylibrary");
}
/* other functions like onCreate, etc... */
public native void libfunc();
public void onClick(View v){
libfunc();
}
}
Итак, когда gdb
запускается, рассматриваемая библиотека фактически загружена, ноу вас все еще может быть время установить точки останова и т. д. до сбоя программы;когда вы закончите настройку отладчика, в командной строке (gdb)
введите continue
(или просто 'c
'), затем нажмите кнопку, чтобы запустить программу сбоя и счастливой отладки ...