mavzermete 1
mavzermete
Test5410 1
Test5410
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Reklam vermek için turkmmo@gmail.com

Debug Bilgilerini Kapatmak

  • Konuyu başlatan Konuyu başlatan CNCN
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 9
  • Görüntüleme Görüntüleme 2K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
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.


[CODE lang="python" title="root/game.py dosyasını açıp, aşağıdaki kodu buluyoruz."] if self.isShowDebugInfo:
self.UpdateDebugInfo()[/CODE]

[CODE lang="python" title="Yorum satırı haline getiriyoruz ya da siliyoruz."] # if self.isShowDebugInfo:
# self.UpdateDebugInfo()[/CODE]


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

C++:
#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++:
#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++:
#ifdef _DEBUG
        stRegisterDebugFlag ="__DEBUG__ = 1";
#else
        stRegisterDebugFlag ="__DEBUG__ = 0";
#endif

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

Turkmmo SF'ye baktığımızda aşağıdaki gibi bir yapı görüyoruz.
C++:
#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...
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst