Metin2’de
core vermek, game’in çökmesi demek. Yani kanal ya da server bir anda kapanıyor, oyuncular DC oluyor. Client’ta özel bir hata görmezsin, sadece bağlantı kopar. Millet buna kısaca “core verdi” diyor.
Bu “çekirdek” muhabbeti biraz yanlış anlaşılıyor. Kimsenin Linux çekirdeği falan çökmüyor. Çöken şey
game process’i.
Bir sistemin core verdiğini nasıl anlarsın?
En net işaret:
Sistem ekledikten sonra oyunda bir şey yapınca (NPC’ye tıklama, item açma, event başlatma vs.)
kanal düşüyorsa, bu büyük ihtimalle core’dur.
Emin olmak için bakacağın yerler belli.
Game klasöründe genelde şöyle dosyalar oluşur:
Bunlardan biri varsa, game crash olmuştur.
Log tarafı önemli
Asıl ipucu
syserr ve
syslog dosyalarında çıkar.
Core öncesi genelde şunlara benzer şeyler görürsün:
- segmentation fault
- null pointer
- invalid memory access
- UNKNOWN HEADER
Syserr’de hata görüp game düşmediyse bu sadece uyarı olabilir. Ama syserr kesilip game kapanıyorsa, orası net core’dur.
“Sistem ekledim core verdi” ne anlama geliyor?
Bu lafın %90’ı şuna çıkar:
Kodda kontrol eksikliği vardır.
En sık olanlar:
- Boş char’a işlem yapma
- Olmayan item’a erişme
- Python’dan yanlış parametre gönderme
- Client–server packet uyumsuzluğu
- DB’de olmayan column’a erişme
Mesela:
- NPC’ye tıklayınca
- Bir itemi kullanınca
- Event başlatınca
core oluyorsa, hata tam o tetiklenen sistemdedir.
Core olunca ne yapılması gerekiyor?
İlk yapılan hata:
“Restart attım geçti” demek.
Geçmez, sadece gizlenir.
Doğru yol şu:
- Core dosyasını silme
Çoğu kişi ilk iş core’u siliyor. En büyük hata. O dosya senin delilin.
- Syserr’e bak
Core’dan hemen önce ne yazmış, oradan fikir alırsın.
- GDB ile bakmak
Bunu yapan çok az ama asıl çözüm burası.
Game + core dosyasıyla bakınca hangi dosyada, hangi satırda patladığını net görürsün.
- Son eklediğin sistemi kapat
Sistem kapalıyken sorun yoksa, açıkken varsa konu zaten bellidir.
- Kontrol ekle
C++ tarafında boş pointer kontrolü yapılmayan yerler core’un ana sebebi.
Her hata core mudur?
Hayır.
- Her syserr core değildir
- Lag core değildir
- Memory leak başka bir şeydir
Ama
oyun düşüyorsa, orada core vardır.