Отладка java-приложения без запуска JVM с аргументами отладки
Обычно для прикрепления отладчика к запущенному jvm вам нужно запустить jvm с такими аргументами, как:
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
Теперь, если я хочу отладить процесс, который не был запущен в режиме отладки, что я могу сделать?
Эта ситуация возникает, когда производственная система (т. Е. Запущенная без отладочных аргументов) имеет «случайный» (я использую термин «свободно») ошибку. Поэтому я не могу перезапустить jvm с соответствующими аргументами, потому что никто не знает, как воспроизвести ошибку снова. Невозможно ли подключиться к JVM в этой ситуации?
- Как включить номера строк в трассировку стека без pdb?
- Ошибка Xcode 4 для обозначения журнала сбоев
- Как я могу отладить мое приложение Meteor с помощью WebStorm IDE?
- Как отлаживать проблемы с Ansible?
- Проверьте, запущено ли приложение из Visual Studio
Просто для пояснения невозможно использовать такие инструменты, как jdb, для подключения к уже запущенным JVM, если они не были запущены в режиме отладки
с страницы руководства JVM
Другой способ использования jdb – связать его с виртуальной машиной Java, которая уже запущена. VM, которая должна быть отлажена с помощью jdb, должна быть запущена со следующими параметрами:
- В Visual Studio C ++, каковы представления распределения памяти?
- Метеор: отладка на стороне сервера
- Будет ли # RELEASE работать, как #if DEBUG делает в C #?
- Отладка iframe с помощью инструментов разработчика Chrome
- Есть что-то вроде «Firebug для IE» (для отладки JavaScript)?
- Фрагментация LOH - обновление до 2015 года
- Есть ли реальное решение для отладки приложений cordova
- Отладить собственный код в Android-библиотеке
Вы можете использовать jsadebugd ( JDK ) для присоединения отладочного сервера к процессу (доступного в Windows с помощью средств отладки для Windows ). Он обозначен как экспериментальный, поэтому сначала вы можете попробовать его на тестовой машине.
Применение:
jsadebugd jdb -connect sun.jvm.hotspot.jdi.SADebugServerAttachingConnector:debugServerName=localhost
Имя соединителя с аргументом arg можно найти с помощью jdb -listconnectors
.
Просто пояснить, что нельзя использовать такие инструменты, как jdb, для подключения к уже запущенным JVM>>, если они не были запущены в режиме отладки
источник в советской россии читает вас
jdb -connect sun.jvm.hotspot.jdi.SAPIDAttachingConnector:pid=9426
использование jstack (полезно в случае взаимоблокировок) или плагин vtv для Visual Basic, также может сделать трюк
VisualVM не является отладчиком, но вы можете получить дампы streamов и кучи кучи, которые могут быть полезны при диагностике некоторых проблем. Для наиболее полезных функций требуется JVM 5 или 6.
Вы всегда можете использовать jdb и отлаживать вручную: P