1

ndk-build でネイティブ ライブラリをビルドしましたが、Android.mk でデバッグ可能としてマークされています。cygwin シェルに入って実行すると

cd (PROJDIR)
ndk-gdb --start --verbose

私は以下を取得します:

Android NDK installation path: /cygdrive/c/Android/android-ndk-r7b
Using default adb command: /cygdrive/c/Android/android-sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using ADB flags: 
Using auto-detected project path: .
Found package name: tiny.test2
ABIs targetted by application: armeabi
Device API Level: 15
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Found debuggable flag: true
Found device gdbserver: /data/data/tiny.test2/lib/gdbserver
Using gdb setup init: ./libs/armeabi/gdb.setup
Using toolchain prefix: /cygdrive/c/Android/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi
Found data directory: '/data/data/tiny.test2'
Found first launchable activity: .Test2Activity
Launching activity: tiny.test2/.Test2Activity
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell am start -n tiny.test2/.Test2Activity
Starting: Intent { cmp=tiny.test2/.Test2Activity }

## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell sleep 2
Found running PID: 0
ERROR: Could not extract PID of application on device/emulator.
       Weird, this probably means one of these:

         - The installed package does not match your current manifest.
         - The application process was terminated.

       Try using the --verbose option and look at its output for details.

デバッグ用の gdb プロンプトに到達しません。最初の C++ 関数呼び出しの前に .java ファイルのブレークポイントを使用して Eclipse から起動しようとしました。その後、ndk-gdb を実行している Java ブレークポイントにいる間に、ポート 5039 を介してデバイスに接続されている PID 1977 が実行されていることが正常に検出されました。 、およびデバイスから libc.so をプルしましたが、その後、のスワッグを取得しましたError while mapping shared library sections: libxxxx.so: No such file or directory。シンボルは にありませんinfo sharedLibrary

LOCAL_CFLAGS := -g -ggdb -O0別の質問からのアドバイスに基づいて Android.mk に追加$(NDK_PATH)/build/core/build-binary.mkし、.so ファイルからエクストラを削除する行を削除しました。

これらのエラーの考えられる原因を誰かが知っている場合は、助けてください。

ありがとう

編集: ndk-gdb は、「この GDB は「(デバッグ シンボルが見つかりません)」の直前に「--host-i586-mingw32msvc --target=arm-elf-linux」として構成されたことを通知します。

これは何か意味がありますか?

EDIT2: sharegdb から実行するSymbol file not foundと、すべての .so ファイルの s のリストが返されます。これは、シンボル ファイルを適切に生成していないか、検索パスに含まれていないように見えます。それらはどこに設定する必要がありますか?

EDIT3: ndk-gdb doc で重要な行を見逃していたことがわかりました -

   "The GDB prompt will be preceded by a long list of error messages,
   where gdb complains that it cannot find various system libraries
   (e.g. libc.so, libstdc++.so, liblog.so, libcutils.so, etc...)

   This is normal, because there are no symbol/debug versions of
   these libraries corresponding to your target device on your
   development machine. You can safely ignore these messages."

これで問題が解決するわけではありませんが、これらがエラーではないことを知っておくと役に立ちます。

4

1 に答える 1

0

env ANDROID_NDK_ROOTはありますか?これは、Windowsでは/ cygdrive / c / Android /android-ndk-r7*のようにする必要があります。コンパイルにDNK_DEBUG=1を追加してみてください。次のようになります。ndk-buildDNK_DEBUG=1 -BV = 1

また、libs / $(Target-ABI)/の下にgdbserverとgdb.setの両方があることを確認してください。

希望はあなたを助けることができます。

于 2012-04-23T01:19:18.657 に答える