Android プロジェクトで C++ ネイティブ コードをデバッグしようとしていますが、何日もデバッガを設定しようとした後、gdb によってスローされたこの奇妙で本当に腹立たしいエラー メッセージが表示されます。
リモート接続エラー: ファイル記述子が正しくありません。
インターネットで同じエラーが発生した人を検索しました。いくつかありますが、問題を解決したものはありません...
これは、Android プロジェクトを設定する方法の詳細です。
- コンピューターに JDK をダウンロードしてインストールし、JAVA_HOME 変数を設定しました。
- 最新のandroid ndk (r8)、最新のandroid sdkをダウンロード
- c++、gcc、gdb、make...を使用してcygwinをインストールしました...
- 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
make コマンドの呼び出しによって生成されるエラー メッセージを回避するために、[プロジェクト] -> [プロパティ] -> [C/C++ ビルド] のコマンド ラインを削除しました。
GNU C セクションと GNU C++ セクションの両方について、「C/C++ 一般」セクションに Android ndk インクルード (ANDROID_NDK_ROOT\platforms\android-14\arch-arm\usr\include) へのパスを追加しました。
新しい「C/C++ アプリケーション」デバッガーを作成し、「標準の Create Process Launcher を使用する」を選択しました。
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に移植する必要があります...
そして、誰かがこのデバッガを動作させたら、あなたの設定について教えていただけると嬉しいです!
よろしくお願いします=)