跳到正文

FullStack Watchdog

让 Watchdog 崩溃报告显示所有线程当时正在执行的完整代码

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

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

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

下图是安装此模组前后的示例(画廊标签页显示效果更好):
改进示例

是的,你可以将此模组包含在整合包中。客户端也可以安装此模组,但由于 Watchdog 系统仅在服务器上运行,它在客户端上不会做任何事情。你也可以仅在服务器上运行带有此模组的服务端。未安装此模组的客户端仍然可以连接。

注意 1: NeoForge 20.4.107 及更新版本已经将此模组合并进去了!对于 1.20.4 MC 或更新版本的 NeoForge,你不需要此模组!https://github.com/neoforged/NeoForge/pull/512

注意 2: Fabric API 0.104.0+1.21.2 及更新版本已经将此模组合并进去了!对于 1.21.2 MC 或更新版本的 Fabric,你不需要此模组!https://github.com/FabricMC/fabric/pull/4052

评论

登录后评论和评分

TelepathicGrunt 的其他作品

查看全部 →