我有一个编译源代码的可执行jar,我想用jdb调试它(不幸的是,在这个环境中没有其他调试器)。
我可以用
调试它jdb -classpath "${JAR_FILE}:${CLASS_PATH}" ${MAIN_CLASS} ${ARGS}
如何让jdb使用内置于jar文件中的源?
注意: Java 6,AIX,ksh
答案 0 :(得分:7)
如果jdb忽略了sourcepath
的* .jar和* .zip条目,也许您可以创建一个批处理文件,将源从目标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
这样调试源与jar同步,并且它自行清理。
答案 1 :(得分:5)
可能无法在论坛this (very old) post中说明。
答案 2 :(得分:0)
没有亲自试过,但sourcepath
选项可能会允许JAR文件:jdb -sourcepath ${JAR_FILE} ...
答案 3 :(得分:0)
实际上,我今天设法在没有源代码的情况下调试到jar文件中,步骤如下:
解压缩jar文件
jdb -sourcepath [未压缩的源文件夹] -classpath [主类的路径]
jdb初始化后执行:
stop at <package>.<yourclass>:<linenunmber>
run <your main class, for example org.springframework.boot.loader.JarLauncher>