Debug Bilgilerini Kapatmak

  • Konuyu açan Konuyu açan hasanmacit
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 1K

hasanmacit

UsProject / discord: hasanmacit
Süper Moderatör
Geliştirici
Yardımsever Üye
Mesaj
4.608
Çözümler
194
Beğeni
4.315
Puan
1.850
Ticaret Puanı
6
Konu kadim dostum S ve J den alıntıdır. (ulaş bu forumda hesabın yok olsaydı etiketlerdim knk)

Merhaba arkadaşlar, bugün cncn_m2 projesini paylaştığımdan beri sürekli olarak "Bu yazıları nasıl kapatıyoruz" şeklinde mesajlar alıyordum. Hızlı şekilde cevap veriyordum, konu olarak açmak daha iyi olacağını düşündüm. Yazılardan kastımızı aşağıdaki resimden anlayabilirsiniz.

0906_122015.jpg


Birçok kişinin yaptığı hata bu kısmı kapatmak için python scripti üzerinde düzenleme yapmak. Önce bana göre hatalı olan yöntemden bahsedeyim.


root/game.py dosyasını açıp, aşağıdaki kodu buluyoruz.:

Python:
Genişlet Daralt Kopyala
if self.isShowDebugInfo:
self.UpdateDebugInfo()

Yorum satırı haline getiriyoruz ya da siliyoruz.:
Python:
Genişlet Daralt Kopyala
#if self.isShowDebugInfo:
#self.UpdateDebugInfo()

Peki düzgün şekilde nasıl yapacağız. Userinterface.cpp dosyasında debug parametresini düzenleyeceğiz. Kendi projemden örnek vereceğim.

C++:
C++:
Genişlet Daralt Kopyala
#ifdef _DISTRIBUTE
stRegisterDebugFlag ="__DEBUG__ = 0";
#else
stRegisterDebugFlag ="__DEBUG__ = 1";
#endif


Orjinal mainline kodlarında bu şekilde, Anlamı _DISTRIBUTE olarak derleniyorsa 0 aksi taktirde 1. Bende cncn_m2 projesini release olarak derlediğimden burası 1 oluyor ve bu sebeple client içinde debug bilgileri gözüküyor. Aşağıdaki gibi yaparak üstünkörü bir çözüm elde edebiliriz.

C++:
C++:
Genişlet Daralt Kopyala
#ifdef _DISTRIBUTE
stRegisterDebugFlag ="__DEBUG__ = 0";
#else
stRegisterDebugFlag ="__DEBUG__ = 0";
#endif

Elbette bu geçici bir çözüm. Şu şekilde düzenlersek daha iyi olur.

C++:
C++:
Genişlet Daralt Kopyala
#ifdef _DEBUG
stRegisterDebugFlag ="__DEBUG__ = 1";
#else
stRegisterDebugFlag ="__DEBUG__ = 0";
#endif

Burada şu şekilde ayarlamış oluyoruz. Debug olarak derleniyorsa 1 aksi taktirde 0.

// SF'ye baktığımızda aşağıdaki gibi bir yapı görüyoruz.
C++:
C++:
Genişlet Daralt Kopyala
#ifdef NDEBUG // @warme601 _DISTRIBUTE -> NDEBUG
PyModule_AddIntConstant(builtins, "__DEBUG__", 0);
#else
PyModule_AddIntConstant(builtins, "__DEBUG__", 1);
#endif

Burada zaten bu kısımdaki mantık hatası düzeltilmiş, debug modu dışında derlendiğinde 0, debug olarak derlendiğinde 1 oluyor. Yani değişiklik yapmaya gerek yok. NDEBUG not debug anlamına yani debug değil, anlamına gelmekte biraz daha ileri ve doğru bir kullanım. Sadece örnek olması açısından ekledim.


0906_132524.jpg




Ve pufff, yazılar gitti.
Bir sonraki öğretici konuda görüşmek üzere... Saygılar, sevgiler...​
 
En son bir moderatör tarafından düzenlenmiş:
hasan hani metin2yi bırakmıştın canım:)
 
açtığın bir metin2 konusu hasan konunu oku istersen
forumlardaki aktifliğimi devam ettirmem ya da ARKADAŞLARIMIN BAŞKA FORUMDAKİ KONULARINI BU FORUMA AÇMAM metin2 server fileslerle uğraştığım ya da herhangi bir faaliyet yürüttüğüm anlamına gelmez. ben metin2yi bıraktım forumu değil. sevgilerle.
 
cncn_m2 dosyaları elinde olan var mı bir türlü bulamadım. Github reposu kaldırılmış.
 
Geri
Üst