Java JNI C отладчик


Есть ли отладчик, который помогает отлаживать программу Java JNI вместе с библиотекой C?

Я должен иметь возможность отлаживать программу, начиная со static void main в Java, и продолжать отлаживать и устанавливать точки останова в собственной функции c, а затем продолжать отлаживать в Java после того, как управление будет перенесено с C на Java.

1 3
jni

1 ответ:

Отладчик виртуальной машины Java очень отличается от отладчика машинного кода. В настоящее время нет такого зрелого решения, как один и тот же отладчик, который мог бы легко переходить от Java к машинному коду и обратно. Хотя это очень раздражающая проблема, которая заставляет некоторых умных людей пытаться разработать такое решение, несомненно, есть тонны невообразимых проблем, связанных с этим. Я лично делаю это следующим образом:

  1. запустите Java-код в режиме отладки и поставьте точка останова при первом интересующем вас исходном вызове. Вы даже можете реализовать статический собственный вызов, который не сделает ничего существенного, но позволит вам сломать его как можно скорее.
  2. запустите собственный отладчик. это абсолютно может быть тот же самый экземпляр Eclipse, учитывая два условия: у вас установлен CDT и ваш собственный код был скомпилирован таким образом, что отладочная информация понимается CDT. Присоединитесь к процессу java(w.exe), выполняющему ваш Java-код. Поставьте точку останова в машинном коде.
  3. всякий раз, когда вам нужно перейти через интерфейсы JNI, поместите точки останова как можно ближе к входу/выходу вызова, насколько это возможно (или необходимо).