Client Hata Ayıklama

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 50

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Uzun zamandır konu açmıyordum, sebebini söylemeye gerek yok çoğu kişi biliyor zaten. Hem bir kaç kişi sorduğu için hem de almanların yaptığı gibi herkesin katkıda bulunabileceği bir konu olsun diye açıyorum bu konuyu.

Konunun ana mantığı:

Basitçe amaç hafızadan silinmeyen şeyleri tespit edip düzeltmek. Oyuna girdikten sonra her ışınlanmada bellek artışı oluyor, bunun sebebi oluşup tekrar silinmeyen her şey. Tek kişinin uğraşıp tamamını bulması ve aktif oyunda denemeden çözdüm demesi aylar sürer, o yüzden katılmak isteyenler katılırsa (sorunu düzeltemese bile bulup konuya atarsa çözen çıkacaktır) toplu bir çözüme ulaşırız.
Öncelikle oyuna debug modda girebilmek için gereken ayarları anlatayım;

Kendi client dosyalarını visual studioda açın, Solution (Türkçe kullananlarda "Çözüm") sekmesine sağ tıklayıp "Properties" (Özellikler) sekmesini açın.
Kod:
CNumberLine::~CNumberLine()     {         ClearNumber();     }

ClearNumber fonksiyonuna yönlendiriyor, burada da oluşturduğu resimleri tuttuğu listeyi temizliyor. Resimler akıllı işaretçiye sahip olmadığı için hafızada kalmaya devam ediyor.
Bunu test etmek için kullandığım yöntem, üretilen resimlerin pointer adreslerini alıp vectoru temizledikten sonra pointer adresiyle baktığımda resmin durduğunu gördüm.
Benzer şekilde bakabilirsiniz.

106832_1ba8dca80ea7d25ef71be7e1bc772d6e.png


Burada olması gereken şey normalde şudur
Kod:
void CNumberLine::ClearNumber()     {         for (auto ins : m_ImageInstanceVector)         {             CGraphicImageInstance::Delete(ins);         } /* Clear number memory leak fix */         m_ImageInstanceVector.clear();         m_dwWidthSummary = 0;         m_dwMaxHeight = 0;         m_strNumber = "";     }

Bu şekilde işi bitince resimleri bellekten silecek, sorun kalmayacak. Yabancı srclerinde "shared_ptr" kullanılan versiyonları görenler vardır. Bu şekilde silmek yerine shared_ptr gibi akıllı işaretçiler kullanarak işi bitince otomatik temizletenler var ama hiç biri kapsamlı olmadığı için %100 çözüm değil.

Bakıp bellekten silinmeyen, kalan şeyleri bulabilirsiniz. Hata ve çözümlerinizi konu altına ekleyerek konuyu ilerletebilirsiniz.
Anlattıklarımda hata olabilir, varsa düzeltilecek bir şey iletirseniz düzeltirim.
Client Hata Ayıklama Nedir?
Client hata ayıklama, Metin2 özel sunucularında çalışan istemci tarafında meydana gelen sorunları tespit etmek ve düzeltmek için yapılan teknik işlemdir.
Bu süreç, oyunun doğru çalışmasını sağlamak, kullanıcı deneyimini artırmak ve sunucu-client senkronizasyonunu korumak açısından kritiktir.

Metin2 Client Hatalarının Sıklıkla Karşılaşılan Türleri
Oyuncuların en çok karşılaştığı hata türleri arasında oyunun çökmesi, grafiksel sorunlar, animasyon eksiklikleri ve sunucuya bağlanamama gibi durumlar yer alır.
Bu hatalar genellikle kaynak kodda bulunan küçük eksikliklerden veya yanlış yapılandırılmış sistem dosyalarından kaynaklanabilir.

Client Hata Ayıklama Süreci Nasıl İşler?
Hata ayıklama sürecinde öncelikle log dosyaları incelenir.
Loglar, client tarafında hangi hatanın ne zaman ve neden oluştuğunu gösterir.
Ayrıca hata ayıklama araçları kullanılarak programın çalışma anında veri akışı izlenebilir.

Python ve C++ Tabanlı Client Sistemlerinde Hata Ayıklama
Metin2 client sistemleri genellikle C++ ve Python dilleri ile yazılmıştır.
C++ kısmında derleme sırasında hatalar görülebilirken, Python tarafında ise script hataları sıkça karşımıza çıkar.
Örneğin UI Script dosyalarında eksik fonksiyon tanımlamaları, yanlış widget referanslamaları gibi hatalar ayıklama sürecinde bulunabilir.

Hata Ayıklama İçin Gerekli Araçlar
Visual Studio, Code::Blocks gibi IDE'ler debug modda derleme yaparak hataları yakalamada yardımcı olur.
Ayrıca Python tarafında hata ayıklama için PyCharm gibi editörler kullanılabilir.
Log viewer programları da büyük kolaylık sağlar.

Client Hata Ayıklama ile İlgili Öneriler
Her değişiklikten sonra sistemi test edin.
Küçük adımlarla değişiklik yaparak hataları daha kolay lokalize edebilirsiniz.
Sunucu ve client versiyon uyumuna dikkat edin.
Geliştirme ortamınızda hata ayıklama modunda derleme yapın.



What is Client Debugging?
Client debugging is a technical process used to detect and fix problems occurring on the client side in Metin2 private servers.
This process is critical for ensuring the game runs correctly, improving user experience, and maintaining server-client synchronization.

Common Types of Metin2 Client Errors
The most common issues encountered by players include game crashes, graphical errors, missing animations, and inability to connect to the server.
These errors are often caused by minor flaws in the source code or misconfigured system files.

How Does the Client Debugging Process Work?
Firstly, log files are examined during the debugging process.
Logs indicate which error occurred, when and why on the client side.
Additionally, debugging tools allow real-time monitoring of data flow during runtime.

Debugging in Python and C++ Based Client Systems
Metin2 client systems are generally written in C++ and Python languages.
While compilation errors may appear in the C++ part, script errors frequently occur in the Python section.
For instance, missing function definitions or incorrect widget references in UI Script files can be identified during the debugging phase.

Tools Required for Debugging
IDEs like Visual Studio and Code::Blocks assist in catching errors by enabling debug-mode compilation.
Moreover, editors such as PyCharm can be used for debugging Python scripts.
Log viewer programs also provide significant convenience.

Suggestions Regarding Client Debugging
Test your system after every change.
Making small incremental changes helps localize errors more easily.
Ensure compatibility between server and client versions.
Compile in debugging mode within your development environment.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt