4

C ライブラリと一緒に Java JNI プログラムをデバッグするのに役立つデバッガはありますか?

Java で static void main から開始してプログラムをデバッグし、デバッグを続けてネイティブ c 関数にブレーク ポイントを配置し、制御が C から Java に転送された後、Java でデバッグを続けることができるはずです。

4

2 に答える 2

4

Java仮想マシンデバッガーは、ネイティブコードデバッガーとは大きく異なります。現在、Javaからネイティブコードにシームレスにステップバックできる同じデバッガーのような成熟したソリューションはありません。これは非常に苛立たしい問題であり、一部の賢い人々はそのような解決策を開発しようとしますが、想像を絶する問題がたくさんあることは間違いありません。私は個人的に次のようにそれを行います:

  1. Javaコードをデバッグモードで開始し、関心のある最初のネイティブ呼び出しにブレークポイントを設定します。静的ネイティブ呼び出しを実装することもできます。これは重要なことは何もしませんが、できるだけ早く中断できるようにします。
  2. ネイティブデバッガーを起動します。CDTがインストールされていて、デバッグ情報がCDTによって理解されるようにネイティブコードがコンパイルされているという、2つの前提条件があれば、これはEclipseの同じインスタンスである可能性があります。java(w.exe)Javaコードを実行しているプロセスにアタッチします。ネイティブコードにブレークポイントを設定します。
  3. JNIインターフェースを介して遷移する必要がある場合は常に、ブレークポイントを呼び出しの開始/終了のできるだけ近くに配置します(または必要になります)。
于 2012-10-30T08:47:06.823 に答える