2

我正在尝试在 Android 项目中调试 C++ 本机代码,但是,在尝试设置调试器几天后,我得到了 gdb 抛出的这个奇怪且非常令人恼火的错误消息:

远程连接错误:文件描述符错误。

我在互联网上搜索有同样错误的人。有一些,但没有一个解决他们的问题......

详细地说,这是我如何设置我的 Android 项目:

  • 我在我的电脑上下载并安装了 JDK,并设置了 JAVA_HOME 变量
  • 下载了最新的android ndk(r8),最新的android sdk
  • 安装了cygwin,带有c++、gcc、gdb、make...
  • 为 Java 开发人员安装了 eclipse Indigo,以及以下软件包:CDT、ADT、Sequoyah

我创建了一个新的 android 项目,添加了本机支持,并在 .mk 文件中设置了以下几行(我认为其中一些行可能已被删除,但我想确定......):

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS    := -Wall -Werror -DANDROID_NDK -g
LOCAL_CPPFLAGS  := -Wall -Werror -DANDROID_NDK -g
LOCAL_LDLIBS    := -lm -llog -g -ggdb -O1
APP_OPTIM   := debug
LOCAL_MODULE    := native
LOCAL_SRC_FILES := native.cpp
include $(BUILD_SHARED_LIBRARY)

我在 Project->Properties->Builders->New->Program 中添加了一个新的构建器:

- Location: selection the ndk-build program, in your NDK directory
- Working Directory: Select the jni folder in your solution

我在Project->Properties->C/C++ Build中去掉了命令行,以避免调用make命令产生的错误信息

我在 GNU C 和 GNU C++ 部分的“C/C++ General”部分中添加了 android ndk 的路径包括 (ANDROID_NDK_ROOT\platforms\android-14\arch-arm\usr\include)

我创建了一个新的“C/C++ 应用程序”调试器,其中:选择了“使用标准创建进程启动器”

in the "Main" tab   

PATH_TO_MY_PROJECT\obj\local\armeabi\app_process in the "C/C++ Application" field
Name of my project in the "Project" field

我将构建配置设置为默认值。

在“调试器”选项卡中

    gdbserver in the debugger combobox

in the main subtab:

    GDB Debugger field:     PATH_TO_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gdb.exe
    GDB Command file:   PATH_TO_MY_PROJECT/obj/local/armeabi/gdb2.setup (I copied gdb.setup in gdb2.setup, and removed the last line as explained in most tutorials on the internet)

in the connection subtab:   
Type: TCP 
Host name: localhost
Port number: 5039 (the same as the one used by ndk-gdb)

我在清单中添加了 android:debuggable="true" 行(除了 .mk 文件中的所有调试标志)

很抱歉这么长的解释,但这会让你对我的配置有一个完整的了解。我可能做了一些其他的设置,但我认为最重要的设置在这里解释。我在 Windows 7 64 上,我尝试了多种设备(模拟器、acer/asus 平板电脑、htc 智能手机......),其中一些已经扎根,但它仍然崩溃。

我希望有人能够帮助我,我必须将整个项目移植到 android...

如果有人让这个调试器工作,我会很高兴了解你的配置!

提前感谢=)

4

0 回答 0