我正在尝试在 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...
如果有人让这个调试器工作,我会很高兴了解你的配置!
提前感谢=)