3

JNI アプリケーションのデバッグに問題があります。this onethis oneまたはthis oneのように、StackOverflow でいくつかのスレッドを読みました。また、別のシェルで gdb を起動して、実行中の Java プロセスにアタッチしようとしました。どちらの場合も問題は同じです: GDB はデバッグするソースを見つけることができません。試したこと

  • C++ソースフォルダーを指す「dir」行をgdbinitに追加します
  • [ソース] タブで、C++ ソース フォルダーを Eclipse の GDB デバッグ構成に追加します。
  • 設定環境を追加 LD_LIBRARY_PATH=/path/to/library.so、library.so である C++ ソース ファイルからビルドされたライブラリ ファイル
  • ddd を Java プロセスにアタッチしますが、作業ディレクトリに pthread_join.c が見つからないため、エラーが発生します。私のハードディスクにはこのファイルがありません。これが何のことかわかりません。

何も機能しませんでした。私はこれに数日を費やしました。JNI ラッパーによって呼び出される C++ コードにバグがあることはわかっていますが、デバッグできません。ヒントはありますか?助けがあれば、Mac OS の Parallels VM の下で Debian 7 で Eclipse Juno を実行しています。

よろしくお願いします。

4

3 に答える 3

2

ネイティブ ライブラリにデバッグ情報が必要です。-gこの情報を実行可能ファイルに含めるには、コンパイラとリンカーに渡す必要があります。を追加することもでき-O0ます。

于 2013-05-31T22:59:19.617 に答える
2

Java プロセスにアタッチする代わりに、C++ アプリを作成して直接デバッグすることができます。テストしたい関数をリンクするだけです。メイン関数でVM を作成し、関数をRegisterNativesに登録し、それらを使用する Java テスト クラスを開始します。

C++ アプリの通常のコンパイル/リンク/デバッグ ループの一部であるため、デバッガーが問題なくソースを見つけられることを願っています。

于 2013-05-31T23:39:07.243 に答える
0

最新のADT バンドルから始めることをお勧めします。Mac バージョンをダウンロードすることもできるので、Parallels は必要ありません (詳細な手順を参照してください)。次に、起動メニューで[Android ネイティブ アプリケーションのデバッグ] を選択します。

于 2013-06-01T17:55:26.110 に答える