Ошибка ввода/вывода gdb, удаленная отладка на Android

StackOverflow https://stackoverflow.com/questions/2276797

  •  21-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь отладить приложение для Android, которое вызывает собственный код для выполнения рендеринга GL.Собственный код — это существующий код, который я пытаюсь портировать (и который я не очень хорошо знаю).У меня есть существующий код, который правильно компилируется, связывается и устанавливается, и у меня есть несколько собственных функций, которые вызывают этот код и которые правильно вызываются из моего Java-кода.Я получаю ошибку сегмента, которую пытаюсь отследить, и испытываю некоторые проблемы с тем, чтобы GDB установил точку останова в программе.Это в Windows XP с Cygwin - и мне, вероятно, следует упомянуть, что я все еще изучаю GDB.

Я начал с указаний на http://honeypod.blogspot.com/2008/01/debug-native-application-for-android.html;вот чем я сейчас занимаюсь.

Запустите приложение в эмуляторе.

В командной строке cmd:

> adb forward tcp:1234 tcp:1234
> adb shell
# gdbserver localhost:1234 --attach 2120
gdbserver localhost:1234 --attach 2120
Attached; pid = 2120
Listening on port 1234

В оболочке Cygwin:

arm-eabi-4.2.1/bin/arm-eabi-gdb.exe out/apps/app-android/libDM.so
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-cygwin --target=arm-elf-linux"...
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
warning: shared library handler failed to enable breakpoint
0xafe0da04 in AppRefCounted::unref () at ../../stlport/stl/_iosfwd.h:39
39      class basic_ostream;
Current language:  auto; currently c++
(gdb) b Java_com_app_AppRenderer_onCreate
Breakpoint 1 at 0xafff1b1a: file apps/app-android/../../../app-Android/jni/DMJNI/DMInterface.cpp, line 75.
(gdb) c
Continuing.
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0xafff1b1a: Input/Output error.

Итак, похоже, что точка останова установлена ​​нормально, и символы в порядке, но, возможно, адрес неправильный, когда он пытается вставить точку останова.Я попробовал несколько вариантов различных команд с указанной выше веб-страницы, но пока безуспешно.

Есть идеи, что происходит?

Спасибо

Это было полезно?

Решение

По сути, на данном этапе работы с NDK 1.6 я обнаружил, что такая отладка строго в NDK не поддерживается.Однако если вы используете PDK (комплект разработки платформы), вы можете выполнять такую ​​отладку с помощью собственного кода.Мы не пробовали PDK, поскольку создание файла карты для нас работало достаточно хорошо (см. это ТАК вопрос), но если вы пойдете по этому пути, проверьте группа Google NDK Больше подробностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top