Использовать банку с источником в качестве источника для JDB? - PullRequest
8 голосов
/ 08 сентября 2010

У меня есть исполняемый файл jar с скомпилированным исходным кодом, и я хочу отладить его с помощью jdb (к сожалению, в этой среде нет другого отладчика).

Я могу отладить его с помощью

jdb -classpath "${JAR_FILE}:${CLASS_PATH}" ${MAIN_CLASS} ${ARGS}

Как мне заставить jdb использовать исходный код, встроенный в файл jar?

Примечания: Java 6, AIX, ksh

Ответы [ 3 ]

7 голосов
/ 12 ноября 2010

Если jdb игнорирует записи * .jar и * .zip для sourcepath, возможно, вы можете создать пакетный файл, чтобы развернуть источник из целевого jar во временный каталог и указать на него sourcepath.

Примерно так

MYDEBUGDIR=/temp/source/mydebug
jar -xf target.jar -C $MYDEBUGDIR
jdb -sourcepath ${MYDEBUGDIR} -classpath "${JAR_FILE}:${CLASS_PATH}" ${MAIN_CLASS} ${ARGS}
rmdir -r $MYDEBUGDIR

Таким образом, источник отладки синхронизируется с флягой и очищается после себя.

5 голосов
/ 08 сентября 2010

Это может быть невозможно, как указано в этом (очень старом) сообщении на форумах.

0 голосов
/ 08 сентября 2010

Не пробовал это лично, но, возможно, опция sourcepath разрешит файлы JAR: jdb -sourcepath ${JAR_FILE} ...

...