Neler yeni
XenForo Bannerlar
Modern AdBlock Uyarısı

Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Altın Konu Metin2 Sunucu Sahiplerinin Kabusu: Core Hataları ve Çözüm Rehberi

Fatih Bulut

Süper Üye
Katılım
6 Kas 2021
Mesajlar
3,088
Tepkime puanı
4,620
Puanları
113
Yaş
31
Konum
Türkiye
Dc
fatihbulut

Metin2 Sunucu Sahiplerinin Kabusu: Core Hataları ve Çözüm Rehberi​


Metin2 sunucu yönetiyorsanız, “core verdi”, “server core dumped” veya sadece “core” gibi uyarılar, sunucunuzun aniden çökmesine neden olabilir. Bu hatalar genellikle arkasında net bir kayıt bırakmaz ve çözümü karmaşık görünür.

Bu rehberde, Metin2 core hatası nedir, neden oluşur ve nasıl analiz edilip çözülür, adım adım öğreneceksiniz.

Core Dosyası Nedir?​


Core dosyası, sunucu programınızın (game dosyası) çöktüğü andaki hafızasının bir “fotoğrafıdır”. Tıpkı kaza sonrası olay yeri incelemesi gibi, programın içinde neler olup bittiğini gösterir.

  • Hangi fonksiyon çalışıyordu?
  • Hangi değişkenler kullanılıyordu?
  • Hatanın kaynağı neresiydi?
Bu soruların cevabını core dosyasıyla bulabilirsiniz.

Adım 1: Core Dosyasını Bulmak ve Hazırlanmak​


Core dosyaları genellikle çöken game dosyasının bulunduğu klasörde oluşur. FreeBSD sunucularda tipik dizinler:

Kod:
/usr/game/g1/
/usr/game/share/

Dosya isimleri genellikle:

Kod:
g1.core, auth.core, db.core

Dikkat Edilmesi Gereken Nokta:​


Analiz yapabilmek için core dosyasını oluşturan debug sembolleri içeren game dosyasına ihtiyacınız vardır.

  • Eğer derlerken -g parametresini kullanmadıysanız, elde edeceğiniz bilgiler anlamsız olur.
  • Genellikle dosya adı: game_debug veya game.dbg.

Adım 2: GDB ile Core Analizi​


FreeBSD’de standart hata ayıklama aracı GDB (GNU Debugger)’dır.

  1. Sunucunuza SSH ile bağlanın.
  2. Core dosyasını analiz etmek için komutu girin:

Kod:
gdb /usr/game/g1/game_debug /usr/game/g1/g1.core

Not: Yolları kendi sunucunuzdaki konumlara göre değiştirin.


GDB açıldığında, size bir komut satırı sunacaktır.


Adım 3: Suçluyu Bulmak – Backtrace Komutu​


Core hatasının nedenini bulmak için GDB içinde bt komutunu kullanın:
Kod:
bt
Daha detaylı bir çıktı için:
Kod:
bt full

Bu komut, çökme anına yol açan fonksiyon çağrılarını listeleyerek hatanın kaynağını gösterecektir.


Örnek Çıktı:​

Kod:
#0  0x080a4b9c in CInputMain::Analyze (this=0xbfbfd5f0, d=0x83e2b40,
    c_pData=0x96f6e01 "", uiBytes=4) at input_main.cpp:115
#1  0x081f9b3b in CInputProcessor::Process (this=0x83e2b40,
    lpDesc=0x92f6d80, c_pData=0x96f6e00 "", iBytes=5,
    piExtraBytes=0xbfbfd64c) at input.cpp:55
#2  0x08169d25 in CHARACTER::PointChange (this=0x94b4a00, a_pkChr=0x96d0e00,
    a_points=100, a_bAmount=1 ' ', a_bBroadcast=false) at char_point.cpp:150

Bu örnekte hata, char_point.cpp dosyasının 150. satırındaki PointChange fonksiyonunda meydana gelmiş. Kaynak kodunuzda o satıra giderek problemi analiz edebilirsiniz.

En Sık Karşılaşılan Core Sebepleri​

  • Null Pointer: Olmayan veya silinmiş bir nesneye erişmek.
  • Eksik/Hatalı Database Sorguları: Kod veriyi kontrol etmeden kullanıyor.
  • Yanlış Fonksiyon Parametreleri: Beklenmeyen tür veya sayıda parametre gönderilmesi.
  • Hatalı Quest Fonksiyonları: Lua’dan C++ tarafına hatalı veri aktarımı.

Core Hatalarını Önlemenin İpuçları​

  1. Kodda null kontrolü yapın.
  2. Database sorgularında eksik veri kontrolü ekleyin.
  3. Fonksiyon parametrelerini doğrulayın.
  4. Quest fonksiyonlarını test ortamında sık sık kontrol edin.
Bu adımlar, Metin2 sunucunuzu daha stabil ve güvenli hâle getirir. Unutmayın, her core dosyası çözülmeyi bekleyen bir bulmacadır.
 

Benzer konular

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar