Я хотел бы выполнить некоторую отладку программы Java, работающей в Windows: отследить, распечатать некоторые переменные, установить точки останова, выполнить пошагово через критическую функцию.
Первое, что я попробовал, было jdb -attach 5312
. Это не удалось с ошибкой «shmemBase_attach: система не может найти указанный файл». Я нашел несколько связанных вопросов об этом сообщении об ошибке, но они, похоже, говорят о более сложном сценарии, включающем отладчик и цель на разных хостах.
То, что я делаю, - это локальное подключение процесса, поэтому я думаю, что это должно быть проще. Но что-то усложняет.
Целевой процесс не запускается как java -jar foo.jar
или что-то подобное. Это файл EXE для конкретного приложения, обертывающий код Java. Он идентифицирует себя в списке процессов как «Обработчик службы демона Commons» и, глядя на строки внутри него, кажется, что это программа prunsrv
из демона Apache Commons.
Process Explorer сообщает мне, что аргументы командной строки отсутствуют, а процесс является дочерним по отношению к services.exe. У меня есть возможность запускать и останавливать его из служб Windows, но я не знаю, как с ним что-то еще делать.
Команда jps
не показывает этот процесс, но я знаю, что это Java-программа... слегка завернутая. Есть ли способ отладить его?