Решение за грешката „Core Dumped“ на серверите Metin2
Една од грешките од кои најмногу се плашеа администраторите на Metin2 PVP-серверот и предизвикува ненадејно затворање на каналите (CH) „Core Dumped“ (Core Crash) доаѓа. Оваа грешка се јавува кога серверот сам ќе се исклучи како резултат на наиде на неисправен код што не може да го обработи во меморијата (RAM), неважечко барање за базата на податоци или оштетена датотека. Подолу можете да најдете како да го решите овој проблем чекор по чекор.
Чекор 1: Откривање која датотека паднала
Кога ќе ја добиете грешката Core dumped, серверот се става во паднатата папка.game.coreилиdb.coreОстава голема датотека со име . Прво треба да го најдеме изворот на проблемот:
- Поврзете се на вашиот сервер со Filezilla и одете до директориумот каде што се наоѓаат каналите (на пр.
/usr/game/cores/channel1). - во папка игра.јадро Ако ја видите датотеката, грешката е предизвикана од систем во играта (изворни кодови на C++ или употреба на неточна карта/артикал).
- ако
/usr/game/cores/dbво db.core Ако го видите, проблемот е целосно предизвикан од корумпирана табела или неточен прото запис во базата на податоци Navicat.
Чекор 2: Снимање на погрешен излез од Syserr
Грешката Core Dumped остава критичен дневник во датотеката syserr.txt во точната секунда што ќе се појави. За да ја решите грешката:
- Во папката што дава исфрлено јадро (на пр. канал1) syserr Отворете ја датотеката.
- Одење до крајните линии на датотеката
CRASH,Segmentation FaultилиAssertion failedПребарајте ги зборовите. - Името на функцијата или кодот на ставката напишана овде директно ќе ви покаже кој систем го урна серверот. Проверете со оневозможување на последниот систем или потрага што сте го додале.
Чекор 3: Анализирање на основна датотека со GDB (технички метод)
Ако ништо не е напишано во датотеката syserr, можете да го користите GDB (GNU Debugger) на FreeBSD за да ја пронајдете линијата на кодот C++ што го предизвикува падот:
- Внесете го директориумот каде што се случи падот преку Putty:
cd /usr/game/cores/channel1 - Започнете го дебагерот со извршување на следнава команда во терминалот:
gdb game game.core - Кога ќе се отвори командната линија, таа се појавува на екранот
btилиwhereНапишете го и притиснете Enter. - Во списокот што ќе се појави на екранот, датотеката со изворниот код и бројот на линијата што ја предизвикале грешката (на пр.:
char_item.cpp:1452) ќе бидат наведени. Треба повторно да изградите со коригирање на оваа линија во делот Извор.
Чекор 4: Прегледајте ги вообичаените грешки
Ако не сте направиле промени на кодот неодамна, проверете ги овие два случаи:
- Корупција на табела: Табелите во базата на податоци за плеерот Navicat може да се оштетени. Избирање на сите табели и десен клик Одржување -> Поправка на табели -> Проширени направете го тоа.
- Прелевање на магацинот: Грешка направена од играчите (на пр., измамник со неограничен удар, бубачка за домашни миленици) може да ја надува меморијата на серверот и да предизвика фрлање на јадрото. Користете ажурирани инфраструктури за заштита (Guard).
Оваа статија е специјално подготвена за PvPServer.