Вслед за предыдущей статьейОригинал | Самая последняя и самая простая компиляция кода openjdk13 во всей сетиПосле этого у нас есть собственный скомпилированный jdk и хотспот, как показано на рисунке ниже. Сделайте что-нибудь дальше.
Создайте среду отладки
1. Загрузите программное обеспечение CLion
Jetbrains - очень хорошая компания. IDEA, используемая в Java, очень мощная. Эта компания также предоставляет IDE для C/C++ под названиемCLion, нам нужно скачать эту IDE для отладки исходного кода JVM.
2. Импортируйте исходный код
После установки CLion мы можем сначала импортировать код и кратко записать шаги операции ниже.
выберитеNew CMake Project from Sources.
Откройте каталог, в который мы загрузили OpenJDK13, мой каталог/opt/java/openjdk/jdk13
.
Далее появляется всплывающее окно и нажмите Далее, просто дождитесь завершения импорта исходного кода (это займет несколько минут, можете пить чай).
3. Начальная конфигурация
После импорта исходного кода нам нужно настроить программу запуска, некоторые конфигурации здесь нужно указать заново, в основном следующие два пункта.
-
ExecutableИзмените его на наш скомпилированный
java
программа.
- Buildнеобходимо удалить.
4. Сделайте точку останова
мы вthread.cpp
кодThreads::create_vm
метод установки точки останова.
5. Начать отладку
Нажмите кнопку «Отладка», чтобы начать отладку нашего кода JVM. Вы можете видеть, что точка останова, на которую мы нажали, вступила в силу, как показано на следующем рисунке.
Поздравляем, мы успешно отладили код JVM. Однако я нашел следующее сообщение об исключении и решил его.
6. Найдите это исключение
Нажмите F9, чтобы программа продолжила работу, и мы обнаружили, что в консоли появилась строка слов в красном поле ниже.
Это сообщение об исключении для GDB, мы можем это исправить, добавив конфигурацию в наш пользовательский каталог. Создайте~/.gdbinit
файл, добавьте следующую конфигурацию.
handle SIGSEGV nostop noprint pass
handle SIGBUS nostop noprint pass
handle SIGFPE nostop noprint pass
handle SIGPIPE nostop noprint pass
handle SIGILL nostop noprint pass
Если вы запустите его снова, такого сообщения об исключении не будет.
отлаживать собственный код
Скомпилированный нами исходный код JVM был скорректирован выше.Некоторым студентам может быть интересно узнать, как отлаживать код, написанный самостоятельно? Выше мы видели отладку исходного кода JVM, наш собственный код может быть скомпилирован нашим скомпилированным JDK, а затем указан в параметрах выполнения программы. Вот пример.
1. Напишите тестовый код
Пишем простую программу Hello JVM, код такой.
public class Test {
public static void main(String[] args) {
System.out.println("hello jvm");
}
}
2.компиляция javac
Скомпилировано нашей скомпилированной командой JDK javac Test.java.
liebrother@liebrother:/opt/java/openjdk/jdk13/build/linux-x86_64-server-release/jdk/bin$ ./javac Test.java
3. Настройте параметры запуска
Затем указываем наш класс Test в стартовой конфигурации программы Clion.
Результатом заключается в том, что наша программа работает.
Это то, о чем мы сегодня поговорим для отладки собственных программ на уровне JVM.
Суммировать
Кратко опишите построение этой среды JVM. На самом деле никаких перипетий в процессе строительства не было, официальные документы были написаны очень четко (хотя все они были на английском языке), в этих двух статьях также постарались упростить некоторые этапы и сохранить скриншоты.С одной стороны, это дает возможность пересмотреть себя, а с другой стороны, это также ярлык для друзей, которые хотят построить эту среду.. Следующее определение этой среды:Дайте себе возможность глубже понять JVM.Когда вы сталкиваетесь с какими-то неясными знаниями и не понимаете принцип, вы можете посмотреть исходный код и узнать логику исходника..
Я настоятельно рекомендую друзьям построить такое окружение, и не бойтесь, что JVM переполнена кодом на C/C++, который может быть очень трудным для чтения в начале, и вы привыкнете к этому, прочитав больше.
推荐阅读
После стольких лет написания Java-кода я, наконец, отлаживаю его в JVM.
Самая последняя и самая простая компиляция кода openjdk13 во всей сети
Самые базовые знания о потоках
Босс сказал вам перестать блокировать
Ешьте фаст-фуд, чтобы узнать последовательный, параллельный, параллелизм
Заварите чашку чая и научитесь быть асинхронным
Как много вы знаете о процессе?
Шаблоны проектирования читают и забывают, забывают и снова читают?
Ответьте на «Шаблоны проектирования» в фоновом режиме, чтобы получить электронную книгу «Одна история, один шаблон проектирования».
觉得文章有用帮忙转发&点赞,多谢朋友们!