Metin2 Hata Çözümleri Rehberi: Syserr Analizi ve GDB ile Core Çözme

ezikdemebana · 1 Ekim 2026 · 1 görüntülenme · 0 cevap

Metin2 geliştiriciliğinde (developer) yeni sistemler eklemek kadar, eklenen bu sistemlerin yol açtığı teknik arızaları, sunucu çökmelerini ve istemci kilitlenmelerini tespit edip düzeltmek de hayati önem taşır. Bir pvp server projesinde kararlılığı sağlamanın tek yolu, ortaya çıkan hataları körü körüne tahmin etmek yerine resmi log (günlük) dosyalarını doğru okumaktır. Bu rehberde, Metin2 projelerinde karşılaşılan hata türlerini, syserr analizini ve sunucu çökmelerine (core dump) yol açan sorunları GDB ile ayıklama yöntemlerini ele alıyoruz.


İstemci ve Sunucu Syserr Günlüklerinin Mantığı

Metin2 altyapısında yaşanan her türlü yazılımsal ve grafiksel uyumsuzluk arka planda syserr.txt veya syserr dosyalarına kaydedilir. Hata çözümlerinde ilk bakılması gereken yer burasıdır:

Client Syserr: Oyuncunun bilgisayarındaki Metin2 klasöründe oluşur. Genellikle Python kodlarındaki hizalama (Tab/Space) hatalarını, eksik veya adı yanlış yazılmış görsel dokuları (TGA/SUB), client source tarafındaki C++ çökme detaylarını raporlar. Satır satır incelendiğinde istemcinin neden hata vermeden kapandığını doğrudan gösterir.

Server Syserr: Sunucu tarafında (FreeBSD) her kanalın (CH) ve veritabanının (db) kendi klasöründe oluşur. Yanlış yazılmış veya derlenirken hata alınmış quest fonksiyonlarını, veritabanındaki tablo uyuşmazlıklarını, eksik veya hatalı yapılandırılmış item_proto / mob_proto satırlarını açıkça listeler. Kanalların neden açılmadığını veya neden kapandığını buradan görebilirsiniz.

GDB ile Core (Sunucu Çökme) Analizi Nasıl Yapılır

Sunucu aniden kapandığında ve kanallar çöktüğünde (ch düşmesi yaşandığında), kanal klasörlerinin içerisinde game.core adında yüksek boyutlu bir dosya oluşur. Bu dosya, oyun motorunun tam çökme anında RAM belleğindeki tüm verilerin bir anlık haritasıdır (core dump).

Putty Üzerinden GDB Bağlantısı: Sunucunuzda gdb aracının kurulu olması gerekir. Çökmenin kaynak koddaki (Source) tam olarak hangi fonksiyondan ve hangi satırdan kaynaklandığını bulmak için Putty terminalinden çökmenin yaşandığı klasöre gidilir.

Komut Satırı Analizi: Terminale gdb game game.core (veya sunucu yapınıza göre gdb game.core) yazarak analiz motoru başlatılır. 

Hata Ayıklama Komutu: GDB ekranı yüklendikten sonra terminale bt veya backtrace yazıp Enter tuşuna basılır. Sistem bize çökme anında tetiklenen son fonksiyonları alt alta listeler. Satırların sonunda yer alan dosya adı ve numarasını (Örn: char_battle.cpp:1425) inceleyerek kaynak kodumuzun hangi satırda tıkandığını, hangi bellek işaretçisinin (pointer) boş (NULL) kalıp sunucuyu çökerttiğini nokta atışı tespit edebilir ve C++ source üzerinden düzeltebiliriz.