5

サンプルの hello-jni の C コードをデバッグしようと何日も試みましたが、成功しませんでした。私はすべての要件をインストールし、多くのブログ投稿に従って (毎回プロセスを繰り返します)、これを機能させようとしました。

私は使っている

  • ウィンドウズ7 64ビット
  • CDT 8.0.2 を使用した Eclipse Juno
  • Android NDK r8b
  • Android SDK 20.0.3
  • make、gcc-core、および gcc-g++ がインストールされた最新の cygwin ( NDK r8b はこれを必要としないと思いますか?)

この http://developer.android.com/tools/sdk/ndk/index.htmlに従って 、apk をセットアップしてビルドしました。正常にビルドおよびインストールされ、Android アプリケーションとして起動された場合は Java コードをデバッグできます

NDK プラグインhttp://tools.android.com/recent/usingthendkpluginに関するこの記事に従いまし たが、C コードでブレークポイントを使用して Android ネイティブ アプリケーションとして起動すると、アプリが起動し、ブレークポイントがヒットせずに通常どおり実行されます。エラーメッセージはありません!

どんな助けでも大歓迎です。ありがとう!

編集:

クリアされる前にコンソールに 0.5 秒間表示されるいくつかのエラーを次に示します。

警告: ターゲット ライブラリ リストの解析中 (2 行目): /system/bin/linker にセグメントが定義されていません

警告: 52 個のライブラリ (/system/bin/linker など) の共有ライブラリ シンボルを読み込めませんでした。

完全なリストを表示するには、「info sharedlibrary」コマンドを使用します。

「set solib-search-path」または「set sysroot」が必要ですか?

警告: 動的リンカー ブレークポイント関数が見つかりません。

GDB は、共有ライブラリの初期化子をデバッグしたり、明示的にロードされた動的コードを追跡したりできなくなります。

終了 (プログラムの再開時にシグナル SIGINT を期待)

4

2 に答える 2

4

私が使用した上記のガイドは、私が必要としていたすべてであり、すべてが機能していたことがわかりました。

警告メッセージは単なる...警告であり、ネイティブ コードのデバッグはずっと機能していました。私の問題は、gdb がアタッチされる前に、ブレークポイントがすぐに呼び出されていたネイティブ関数呼び出しでした。JNI 関数呼び出しを onClick に入れたら、結局、ブレークポイントにヒットしていることに気付きました。

上記のリンクとこの回答が誰かの役に立てば幸いです。ありがとう...

于 2012-11-06T17:28:12.877 に答える
0

NDK のドキュメントによると..「現時点では 'ndk-gdb' を実行するには Unix シェルが必要です。これは、Windows で実行するには Cygwin が必要であることを意味します。将来の NDK リリースでこの制限を取り除くことを望んでいます。」

JeffG cygwin を使用せずに Windows でネイティブ コードをデバッグできますか?

于 2012-11-19T10:34:20.023 に答える