Я скомпилировал OpenJDK8 в Mac. Но когда я использовал gdb для отладки простого Java-класса (просто системного), он всегда показывал ошибку, нет имени исходного файла init.cpp.
(Добавлена точка останова в строке init.cpp: 95). Тем не менее, он может перейти в C-файл, как main.c. Поэтому не уверен, правильно ли я скомпилировал OpenJDK8 или использую правильную версию для зависимостей.
Проверено, что libjvm.dylib libjvm.dylib.dSYM существует в LD_LIBRARY_PATH.
Использование ENV:
mac sierra 10.12.6
gdb 7.12.1
Команда отладки:
export LD_LIBRARY_PATH=~/openjdk/build/macosx-x86_64-normal-server-fastdebug/hotspot/bsd_amd64_compiler2/fastdebug
ggdb --args ~/openjdk/build/macosx-x86_64-normal-server-fastdebug/jdk/bin/java Test
Результат1 (точка останова в файле cpp):
(gdb) break init.cpp:95
No source file named init.cpp.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (init.cpp:95) pending.
(gdb) run
Starting program: ~/openjdk/build/macosx-x86_64-normal-server-fastdebug/jdk/bin/java Test
[New Thread 0x1403 of process 94443]
warning: unhandled dyld version (15)
hello,hotspot
[Inferior 1 (process 94443) exited normally]
Результат2 (точка останова в файле c):
(gdb) break main.c:125
Breakpoint 2 at 0x100007912: file ~/openjdk/jdk/src/share/bin/main.c, line 125.
(gdb) run
Starting program: ~/openjdk/build/macosx-x86_64-normal-server-fastdebug/jdk/bin/java Test
[New Thread 0x1603 of process 94446]
warning: unhandled dyld version (15)
Thread 2 hit Breakpoint 2, main ()
at
~/openjdk/jdk/src/share/bin/main.c:125
125 return JLI_Launch(margc, margv,
Задача ещё не решена.
Других решений пока нет …