java - 调试 - 如何在不访问源代码的情况下调试Java应用程序?

124 2

我需要调试一个没有源代码的Java应用程序,它在Jetty服务器上运行,使用JD-GUI进行反编译效果很好。通过套接字连接或共享内存连接JDB也很好。

我主要尝试了Eclipse使用JD-Eclipse插件远程调试,但未能找到成功将调试器附加到正在运行的进程的方法,

时间: 原作者:

110 1

JD-Eclipse

Realignment fragment

安装过程非常简单:

  • 按照JD-Eclipse站点中提供的步骤安装JD-Eclipse (流程非常简单)
  • 重新启动Eclipse
  • 下载Realignment realignment.jd.ide.eclipse_1.0.2.jar
  • 将文件复制到dropins
  • 重新启动Eclipse
  • 转到Windows ->首选项
  • 导航到常规- >编辑器- >文件关联
  • 在"文件类型"部分选择*.class,在关联编辑器部分选择"Realignment ",然后单击"默认"按钮,
  • 点确定,开始调试!

原作者:
51 0

以下是一个可能的解决方案:

  • 使用以下参数运行jar:

java -agentlib:jdwp=transport=dt_shmem,address=XXXXX,server=y,suspend=n -jar YourJar

  • 使用Run-在Eclipse中运行jdb

jdb -attach XXXXX

  • 设置断点,如下所示:

stop at <TheClassName>:<ThePosition>

解压缩jar文件

jdb -sourcepath -classpath

初始化后,实例化:

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

原作者:
...