- Katılım
- 11 Nis 2021
- Konular
- 0
- Mesajlar
- 15
- Çözüm
- 2
- Online süresi
- 1mo 27d
- Reaksiyon Skoru
- 2
- Altın Konu
- 0
- TM Yaşı
- 5 Yıl 1 Ay 24 Gün
- Başarım Puanı
- 28
- MmoLira
- 434
- DevLira
- 0
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Emeğine sağlık güzel bir anlatım ve bilgi konusu olmuş.
Forum topluluğu metin2 ile uğraşan kitle yetersiz kalıyorsa 'Server files' yapmak yerine yazılım öğrenmeli ve bu altın konu ile bilgilerine bilgi katmaları lazım kendi düşüncem.
Forum topluluğu metin2 ile uğraşan kitle yetersiz kalıyorsa 'Server files' yapmak yerine yazılım öğrenmeli ve bu altın konu ile bilgilerine bilgi katmaları lazım kendi düşüncem.
- Katılım
- 16 Şub 2015
- Konular
- 144
- Mesajlar
- 1,791
- Çözüm
- 86
- Online süresi
- 2mo 3d
- Reaksiyon Skoru
- 1,669
- Altın Konu
- 36
- TM Yaşı
- 11 Yıl 3 Ay 20 Gün
- Başarım Puanı
- 234
- MmoLira
- 438
- DevLira
- 15
Paylaşım için teşekkürler
- Katılım
- 2 Mar 2011
- Konular
- 29
- Mesajlar
- 267
- Çözüm
- 4
- Online süresi
- 20d 20h
- Reaksiyon Skoru
- 183
- Altın Konu
- 0
- TM Yaşı
- 15 Yıl 3 Ay 7 Gün
- Başarım Puanı
- 130
- MmoLira
- 371
- DevLira
- 21
kral paylaşım.
teşekkürler
teşekkürler- Katılım
- 24 Ara 2015
- Konular
- 0
- Mesajlar
- 13
- Online süresi
- 8d 1h
- Reaksiyon Skoru
- 2
- Altın Konu
- 0
- TM Yaşı
- 10 Yıl 5 Ay 14 Gün
- Başarım Puanı
- 73
- MmoLira
- 569
- DevLira
- 0
Hi All,
Tried it step by step but my debugger is acting different from the one from the author.
Per instance:
Even If I stop the debugger, like it says there, the result it's the same when analysing the snapshots.
Any clue on this?
Many thanks!
Tried it step by step but my debugger is acting different from the one from the author.
Per instance:
Even If I stop the debugger, like it says there, the result it's the same when analysing the snapshots.
Any clue on this?
Many thanks!
- Katılım
- 2 May 2019
- Konular
- 5
- Mesajlar
- 127
- Online süresi
- 7d 3h
- Reaksiyon Skoru
- 150
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 1 Ay 4 Gün
- Başarım Puanı
- 80
- MmoLira
- 730
- DevLira
- 15
Konu başında bahsedilen konumlandırma yapıp "Local Windows Debugger" ile uğraşmadan direkt olarak ta başlatabilirsiniz;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ığı:Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
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.
Burada "Startup Project" bölümünde "Single startup project" yazan yeri seçip projelerden de "UserInterface" seçin.
UserInterface projesine sağ tıklayıp Properties penceresini açın. "Debugging" bölümünde "Working Directory" göreceksiniz, oraya kendi client (oyuna girdiğiniz klasör(pack, dll vs.) yolunuzu girin. Resimdeki gibi .. şeklinde olmak zorunda değil direkt "C:/Oyun" gibi de yazılabilir.
Üst bardaki "Local Windows Debugger" veya F5 tuşuna basarak oyunu başlatabilirsiniz. Visual Studio yönetici yetkisiyle açılmamışsa yeniden başlatmamız gerekiyor diye uyarı çıkar, evet dediğinizde kapanıp yeniden açılacak, tekrar F5 bastığınızda oyun başlayacaktır.
Not: Herhangi bir anticheat kullanıyorsanız anti-debugger kontrolü bulunacağı için oyuna girmeyecektir. Anticheati devre dışı bırakın.
Not2:Oyun açıldığında antivirüs kullanıyorsanız debug modda olduğu için visual studionun internet erişimini kapatacaktır. Ekrana uyarı geliyor zaten, erişim izni verirsiniz.
Oyun açıldığında sağ tarafta bu "Diagnostic Tools" penceresini görmüyorsanız üst bardan sırasıyla "Debug -> Windows -> Show Diagnostic Tools" veya "CTRL + ALT + F2" kombinasyonuyla açabilirsiniz.
Sonra aşağıdaki resimdeki gibi "Memory Usage" sekmesine geçin. "Heap Profiling" tıkladığınızda "Take Snapshot" butonu aktifleşecek.
Not: Listede memory usage yoksa Select Tools yazan çark var, ona tıklayıp "memory usage" işaretleyin.
Ekli dosyayı görüntüle 75930
Oyuna girin, karakter oyunda göründüğü anda hiç bir işlem yapmadan "Take snapshot" diyerek 1. kalıbı alın. "warp nick" komutuyla kendinize ışınlanın, karakter göründükten sonra yeniden take snapshot basın. son olarak da oyundan çıkış atın (login ekranına dönün oyun tamamen kapanmasın).
Diagnostic ekranı aşağıdaki resimdeki gibi olacak. Buradan "Allocations (diff)" kısmında memory iniş çıkışlarını görüyorsunuz. Ok işaretinin yanındaki sayıya tıklayarak işlemleri görebilirsiniz.
Ekli dosyayı görüntüle 75931
Önünüze kullanılan fonksiyonları içeren bir işlem ağacı gelecek. Orada yeni oluşturulan ve yok edilen her şeyi görebilirsiniz. Oluşmuş, yok edilmemiş olanları tespit edip düzeltmek gerekiyor. Örnek olarak numberline seçtim. Skillerin üzerinde "m1" gibi detayların yazdığı küçük yazı yani. Çift tıklayınca detaylı bir işlem ağacı açılıyor.
Ekli dosyayı görüntüle 75932
Buradan da üzerlerine 1 kere tıklayınca altta çağırma sırasıyla fonksiyonları görüyorsunuz.
Ekli dosyayı görüntüle 75933
Bu resimde taskbardaki skill slotu var. Oluşturma aşamalarında bir sorun yok, CSlotWindow classında destroy aşamasında da bir eksiklik yok, numberline oluşturuyor ve işi bitince delete ile siliyor.
Class mantıkları kurucu ve yıkıcılardan oluşuyor. Classın ismini :: ile tekrar çağırınca bu kurucu oluyor.
CNumberLine::CNumberLine()
gibi.
araya ~ koyunca yıkıcı oluyor. Slotwindow classında delete ile numberline silindiğinde bu yıkıcı fonksiyonu çalışıyor.
C++: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.
Ekli dosyayı görüntüle 75935
Burada olması gereken şey normalde şudur
C++: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.
Oyun açık iken vs'da,
İşleme iliştir diyip çıkan pencerede aşağıdaki resimdeki arama kısmına clientiniz ismini yazarak bulun ve işlemi seçin daha sonra aşağıdaki iliştir butonuna bastığınızda hata ayıklama işlemi başlamış olucaktır.
Not: VS'yi yönetici çalıştırmadıysanız aşağıdaki gibi uyarı ekranı gelir;
Farklı kimlik bilgileri altında yeniden başlata tıklayıp ve yukarıdaki işleme iliştirmeyi tekrar yapın.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 9
- Görüntüleme
- 1K
- Cevaplar
- 8
- Görüntüleme
- 1K
- Cevaplar
- 2
- Görüntüleme
- 73
- Cevaplar
- 8
- Görüntüleme
- 237
- Cevaplar
- 2
- Görüntüleme
- 720



