Metin2 服务器上“Core Dumped”错误的解决方案
Metin2 PVP 服务器管理员最担心的错误之一,导致通道突然关闭(CH) “核心转储” (核心崩溃)来了。当服务器由于遇到无法在内存 (RAM) 中处理的错误代码、无效的数据库查询或损坏的文件而自行关闭时,就会发生此错误。您可以在下面找到如何逐步解决此问题。
第 1 步:检测哪个文件崩溃了
当您收到核心转储错误时,服务器将被放置在崩溃的文件夹中。game.core或db.core它留下一个名为 .首先我们需要找到问题的根源:
- 使用 Filezilla 连接到您的服务器并导航到频道所在的目录(例如:
/usr/game/cores/channel1). - 在文件夹中 游戏核心 如果您看到该文件,则错误是由游戏内系统引起的(C++ 源代码或使用不正确的地图/项目)。
- 如果
/usr/game/cores/db在 数据库核心 如果您看到它,则问题完全是由 Navicat 数据库中的表损坏或原始条目不正确引起的。
步骤 2:捕获错误的 Syserr 输出
核心转储错误在发生时在 syserr.txt 文件中留下一条关键日志。要解决该错误:
- 在提供核心转储的文件夹中(例如:channel1) 系统错误 打开文件。
- 转到文件的底行
CRASH,Segmentation Fault或Assertion failed搜索单词。 - 这里写的函数名或者项目代码会直接告诉你是哪个系统导致了服务器崩溃。通过禁用您添加的最后一个系统或任务进行检查。
第三步:用GDB分析Core文件(技术方法)
如果 syserr 文件中没有写入任何内容,您可以在 FreeBSD 上使用 GDB(GNU 调试器)来查找导致崩溃的 C++ 代码行:
- 通过Putty进入崩溃发生的目录:
cd /usr/game/cores/channel1 - 通过在终端中运行以下命令来启动调试器:
gdb game game.core - 当命令行打开时,它出现在屏幕上
bt或where键入它并按 Enter 键。 - 在屏幕上出现的列表中,显示导致错误的源代码文件和行号(例如:
char_item.cpp:1452)将被列出。您应该通过更正源代码部分中的这一行来重新构建。
第 4 步:回顾常见错误
如果您最近没有进行任何代码更改,请检查以下两种情况:
- 表损坏: Navicat 播放器数据库中的表可能已损坏。选择所有表并右键单击 维护 -> 修复表 -> 扩展 做吧。
- 堆栈溢出: 玩家制造的错误(例如无限击中作弊、宠物错误)可能会导致服务器内存膨胀并导致核心转储。使用最新的保护基础设施 (Guard)。
本文是专门为PvPServer准备的。