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