如何调试运行在活动JVM上的GUI程序JAR文件?
可行的工具及使用方案
Java VisualVM
JDK自带的监控调试工具,直接attach到运行中的JVM进程即可使用。开启它的Profiler功能后,在点击GUI按钮时,可捕获完整的方法调用栈,精准定位触发的字节码/源代码方法,还能查看线程状态、变量快照,全程无需提前导入源码或知晓启动参数。IDE远程调试(IntelliJ IDEA/Eclipse)
无需手动导入源码,先通过Process Explorer这类工具查看Windows启动exe对应的JVM进程命令行参数;若进程未开启调试端口,可通过工具注入-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005这类调试参数。之后在IDE中配置远程调试连接,attach到目标进程即可像本地调试一样设置断点、追踪执行流程、查看变量值,IDE会自动反编译字节码供调试参考。jdb(命令行调试器)
JDK自带的命令行工具,通过进程ID连接到运行中的JVM:执行jdb -attach <进程ID>后,可按类名、方法名设置断点,当GUI交互触发对应方法时,进程会暂停,此时可查看调用栈、变量值,逐步追踪执行流程,适合无GUI环境下的调试需求。Bytecode Viewer
专注字节码分析的工具,支持attach到运行中的JVM进程,可实时追踪GUI交互触发的字节码方法调用,同时能反编译JAR文件,结合调试功能查看变量值与执行流程,无需提前获取启动参数。
内容的提问来源于stack exchange,提问作者Java Weenis
相关产品推荐
相关产品推荐

