java - 如何在 jar 中的反编译类中设置断点以在 IntelliJ 中进行远程调试
问题描述
我有一个在调试模式下运行 Java 程序的远程服务器。
它具有以下 Java 选项: JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
我可以使用 IntelliJ 调试器成功连接到它。
我可以从 IntelliJ 停止该进程并获得线程转储。
我现在想为某个方法添加一个断点。但是,使用断点窗口设置即类模式和方法名称的通配符匹配在理论上是可行的,但它非常慢,无法使用它来调试 Web 请求。
我确实有可用的 jar,所以我希望 IntelliJ 反编译 jar,将其作为源代码显示给我,并允许我在反编译的 jar 中设置断点。
我怎样才能做到这一点?
(我拥有执行此操作的完全权限以及可用的实际源代码,但出于法律原因,我无法将源代码传输到我正在调试的机器上)
解决方案
结果很简单:
- 在 IntelliJ 中打开包含所有 jar 的文件夹(它们显示为列表但不可“浏览”</li>
- 右键单击文件夹,“打开模块设置”</li>
- 转到“库”</li>
- 点击“+”,然后点击“Java”</li>
- 选择该目录中的所有jar
- 现在所有的罐子都是可浏览的
- 在 jar 代码中设置断点
推荐阅读
- scala - 使用Scala将某个DataType的所有列的DataType转换为Spark DataFrame中的另一个DataType
- sql - 比较相同的临时表值
- ios - 滚动视图和 .sheet
- javascript - localStorage 为复选框返回错误值
- javascript - 如何通过网站录制音频(输入和输出)?
- python - 如何使用 Selenium 抓取动态网站?出现错误“NoSuchElementException”
- python - 使用 Python docx2txt 从 Word 文档中提取图像
- c# - 使用 NAudio 如何将非隔行 32 位浮点格式保存到文件
- kotlin - 如何将颜色名称转换为 rgb、rgba 或十六进制
- c# - Xamarin 窗体外壳:如何添加标题工具栏徽标?