[9] [Abort Traceback Update] Official sistemler serisi.

Kaptan Yosun

Discord: kaptanyosun
Site yetkilisi
Acemi Moderatör
Premium Üye
Mesaj
663
Çözümler
21
Beğeni
509
Puan
839
Ticaret Puanı
0
Bu seride doğrudan Metin2'den tersine mühendislik(reverse engineering) ile sökülmüş veya Metin2'ye sağdık kalınarak yazılmış sistemleri paylaşacağım.
Sistemler 2014'te sızdırılan kraizy.tgz arşivindeki mainline için yazılmıştır. Siz başka server dosyaları kullanıyorsanız aradığınız bazı kodları bulamayabilir veya birtakım hatalarla karşılaşabilirsiniz.

Sistem sahibi metin2.dev'den
Linkleri görebilmek için giriş yap veya kayıt ol.
'dir.
Sistemi aldığım asıl konu:
Linkleri görebilmek için giriş yap veya kayıt ol.


9- Abort Traceback Update: Client çökmeleri durumunda daha detaylı hata geri izleme raporu veren güncelleme.
  • Metin2 22.5.7.0 sürümünden ters mühendislik ile sökülmüştür.
  • Seçenek 1 Official fonksiyondur, Seçenek 2 ise hangi satırın hata verdiğini de raporlayan ekleme yapılmış fonksiyondur.
Nasıl yapılır:
Client/UserInterface/PythonApplication.cpp dosyasını açın.
Fonksiyonu bulun ve seçeneklerden biri ile değiştirin:
void CPythonApplication::Abort()
{
    TraceError("============================================================================================================");
    TraceError("Abort!!!!\n\n");

    PostQuitMessage(0);
}

Seçenek 1 (Official fonksiyon):
void CPythonApplication::Abort()
{
    TraceError("============================================================================================================");
    TraceError("Abort!!!!\n\n");

    PyThreadState* tstate = PyThreadState_GET();
    if (tstate)
    {
        for (PyFrameObject* frame = tstate->frame; frame; frame = frame->f_back)
        {
            PyCodeObject* f_code = frame->f_code;
            if (!f_code || !f_code->co_filename || !f_code->co_name)
                continue;

            const char* filename = PyString_AsString(f_code->co_filename);
            const char* funcname = PyString_AsString(f_code->co_name);
            TraceError("filename=%s, name=%s", filename, funcname);
        }
    }

    PostQuitMessage(0);
}

Seçenek 2 (Satır numarası raporu eklenmiş fonksiyon):
void CPythonApplication::Abort()
{
    TraceError("============================================================================================================");
    TraceError("Abort!!!!\n\n");

    PyThreadState* tstate = PyThreadState_GET();
    if (tstate)
    {
        for (PyFrameObject* frame = tstate->frame; frame; frame = frame->f_back)
        {
            PyCodeObject* f_code = frame->f_code;
            if (!f_code || !f_code->co_filename || !f_code->co_name)
                continue;

            const char* filename = PyString_AsString(f_code->co_filename);
            const char* funcname = PyString_AsString(f_code->co_name);
            int line = PyFrame_GetLineNumber(frame);
            TraceError("filename=%s, name=%s, line=%d", filename, funcname, line);
        }
    }

    PostQuitMessage(0);
}

Örnek hata raporu:

Eski fonksiyon ile:
0131 12:59:00866 :: ============================================================================================================
0131 12:59:00867 :: Abort!!!!

Yeni fonksiyon ile:
0131 12:59:00866 :: ============================================================================================================
0131 12:59:00867 :: Abort!!!!


0131 12:59:00867 :: filename=root/black_test.py, name=__LoadWindow
0131 12:59:00867 :: filename=root/black_test.py, name=__init__
0131 12:59:00867 :: filename=root/black_test.py, name=<module>
0131 12:59:00867 :: filename=root/system.py, name=_process_result
0131 12:59:00867 :: filename=root/system.py, name=__pack_import
0131 12:59:00867 :: filename=root/introLogin.py, name=Open
0131 12:59:00867 :: filename=root/networkModule.py, name=__ChangePhaseWindow
0131 12:59:00867 :: filename=root/uiPhaseCurtain.py, name=OnUpdate
0131 12:59:00867 :: filename=root/prototype.py, name=RunApp
0131 12:59:00867 :: filename=root/prototype.py, name=<module>
0131 12:59:00867 :: filename=root/system.py, name=Run
0131 12:59:00867 :: filename=root/system.py, name=execfile
0131 12:59:00867 :: filename=root/system.py, name=RunMainScript
0131 12:59:00867 :: filename=root/system.py, name=<module>
0131 12:59:00867 :: filename=<string>, name=<module>
 
Son düzenleme:
Geri
Üst