a1294790523
本帖最后由 a1294790523 于 2019-10-26 18:53 编辑

一般来说,我们调试bug的情况是这样的:
emmmmm....这个地方怎么有问题?
我得改下代码....输出一下这个表
构建插件....复制粘贴...重启服务器

但是,这其实是很低效率的方法,因为大多数时间都耗在等待服务器开启和构建的时间上了
改一下构建替换一次,加点代码又构建替换一次,一杯茶,一支烟,一个bug改半天.....

但是今天,我们不需要再这么操作了,因为我们有——Remote Debug!
想看看运行时的数据?打个断点就可以了!
应用修改后的代码?直接构建即可热替换(Hot swap)代码!
那么,怎么配置呢?

如果你正在使用Eclipse:
快换IDEA!不用IDEA不是人!
https://www.spigotmc.org/wiki/eclipse-debug-your-plugin/
可以看看这篇教程

如果你正在使用IDEA:
https://www.spigotmc.org/wiki/intellij-debug-your-plugin/
看看这篇教程吧

什么?全是英文看不懂?你不会网页翻译吗?
实在看不懂?照着下面的图做就可以了
另外,因为我不熟悉Eclipse,所以只能做IDEA的教程:
(有人能补上吗,我会置顶的)

启动bat的例子:
  1. @echo off
  2. rem 设置启动jar
  3. set jarname=spigot-1.12.2.jar

  4. rem 拷贝插件文件
  5. copy /y D:\Develop\Project\JieLong\out\artifacts\JieLong_jar D:\Data\TestServer\plugins

  6. rem 使用start命令启动服务器
  7. start "" "C:\Program Files\Java\jdk1.8.0_211\bin\java.exe" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xms4G -Xmx4G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=60 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs -jar %jarname% nogui

  8. rem ping本地来等待JVM启动(JVM启动之前连接会导致远程调试失败)
  9. ping 127.0.0.1
复制代码


一切完成之后,轻轻一个按钮,即可启动远程调试
连接上之后就好像平时那样debug就行了
不过需要注意的是,添加/删除类和方法是不被支持的,所以你得手动关掉服务器如何再重新开启debug(理论上可以自己写个适配器解决需求手动关闭的问题,不过我懒就不写了)
什么?你想问问什么原理?
这是用javaagent实现的:https://www.infoq.cn/article/javaagent-illustrated





粘兽
直接构建到plugins 然后用plugman来reload

似潇game
66666666666666666666666666666666666666