使用带有source作为jdb源的jar?

时间:2010-09-08 13:50:45

标签: java debugging jdb

我有一个编译源代码的可执行jar,我想用jdb调试它(不幸的是,在这个环境中没有其他调试器)。

我可以用

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

如何让jdb使用内置于jar文件中的源?

注意: Java 6,AIX,ksh

4 个答案:

答案 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文件中,步骤如下:

  1. 解压缩jar文件

  2. jdb -sourcepath [未压缩的源文件夹] -classpath [主类的路径]

  3. jdb初始化后执行:

stop at <package>.<yourclass>:<linenunmber>
run <your main class, for example org.springframework.boot.loader.JarLauncher>
  1. 触发断点后,可以使用jdb命令逐步调试