FullStack Watchdog

FullStack Watchdog

让看门狗崩溃信息显示所有线程正在运行的代码

工具

这是一个极小的服务端模组,它能让服务器上的 Watchdog 系统因服务器死锁或卡死过久而被终止时,日志显示更多的信息。崩溃报告日志现在会显示死锁发生时正在运行的所有代码。换句话说,就是所有线程的完整堆栈跟踪,而不是通常被截断(缩短)的版本。

理论上,这应该有助于诊断是哪个模组代码或 mixin 导致了“非主线程”锁死。当一个线程锁死时,服务器主线程会卡住,如果它卡住的时间过长,Watchdog 会因为某个 tick 耗时过长而将其终止。它无法帮助解决所有的死锁问题。 但它或许能给你足够的信息来追踪一些死锁的根源。

下图是安装此模组前后的示例对比 (图库标签页中图片显示效果更佳)改进示例

是的,你可以将此模组包含在整合包中。 客户端也可以安装此模组,但由于 Watchdog 系统只在服务器上运行,它在客户端上不会起任何作用。你也可以只在服务器端安装此模组来运行服务器。未安装此模组的客户端仍然可以正常连接。

注意 1: NeoForge 20.4.107 及更新版本已经合并了这个模组的功能!对于 Minecraft 1.20.4 或更新版本,你无需在 NeoForge 中再安装此模组!https://github.com/neoforged/NeoForge/pull/512

注意 2: Fabric API 0.104.0+1.21.2 及更新版本已经合并了这个模组的功能!对于 Minecraft 1.21.2 或更新版本,你无需在 Fabric 中再安装此模组!https://github.com/FabricMC/fabric/pull/4052