Çözüldü windows server files debug derlendiğinde hata veriyor

  • Konuyu açan Konuyu açan Happy Way
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 14
  • Gösterim Gösterim 254
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Happy Way

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
416
Çözümler
33
Beğeni
133
Puan
869
Ticaret Puanı
0
Serveri windowsta debug olarak başlatırken şu şekilde bir hata alıyorum db başlatıyor sıkıntı yok ama sadece auth ch1 ch99 açılmıyor
Adsız.webp



@enes turan @MT2Dev @Kaiser @hasanmacit

Release olarak derlendiği zaman sorunsuz çalısıyor kaptan yosun windows sf kullanıyorum
 
Son düzenleme:
Yeniden dene butonuna tıkladığında hata veren satırı gösteriyor mu?
Live debug ile kontrol sağlayıp çağrı yığınından patlayan yeri tespit etmen gerek. (Server için uygunsa.)

Bu hatanın sebebi srcnin içinde herhangi bir yerde olabilir, bunu bu şekilde asla bilemeyiz.
 
Yeniden dene butonuna tıkladığında hata veren satırı gösteriyor mu?
Live debug ile kontrol sağlayıp çağrı yığınından patlayan yeri tespit etmen gerek. (Server için uygunsa.)

Bu hatanın sebebi srcnin içinde herhangi bir yerde olabilir, bunu bu şekilde asla bilemeyiz.
Bu server tarafında olduğu için yeniden dene yapınca göstermiyor client gibi kapanıyor live debug ile nasıl yapabilriim


Şu şekilde çalıştırdım ve bu satırı gösteriyor detaylı nasıl öğrenebilirim
Adsız.webp
 
Son düzenleme:
Herhangi bir değişiklik yada ekleme yaptın mı ? Paylaşılan halinde bu sorun yok çünkü
 
Herhangi bir değişiklik yada ekleme yaptın mı ? Paylaşılan halinde bu sorun yok çünkü
Release modunda sorun yok debugta yapıyor ekleme konusuna gelince baya bir ekleme yapıldı :) fix vs ama başlangıçta bunu yapıyor du diye hatırlıyorum sonra bakarım diye umursamamıştım
 
Anladım onu ama bulmak zor böyle
En basit mantık son ekledigin defineleri tek tek pasif edip denemek
 
Anladım onu ama bulmak zor böyle
En basit mantık son ekledigin defineleri tek tek pasif edip denemek
Bu debug moddu server tarafının ilk projeyi indirdiğimde m10_update'i o zamanda çalısmamıştı yani benlik olmadığını düşünüyorum.
Live debug ile yukarıda paylaştığım satırda hata olduğunu söyledi ama detayını nasıl öğrenicem bilmiyorum yardımlarınızı bekliyorum
 
Release modunda sorun yok debugta yapıyor ekleme konusuna gelince baya bir ekleme yapıldı :) fix vs ama başlangıçta bunu yapıyor du diye hatırlıyorum sonra bakarım diye umursamamıştım
assertion hatasını zaten sadece debugda verir. Release ve Distrubute modlarında bu hatayı almazsın.
Ayrıca attığın görselden anladığım kadarıyla server kodlarında çağrı yığını takibi yapılmıyor. Dolayısıyla yapabileceğin tek şey söylendiği gibi sistemleri ve düzenlemeleri tek tek kapatıp geri alarak hangi düzenlemenin buna sebep olduğunu bulmak.

Görseldeki kod ise bellek kodudur, src kodu değil. Oradan hiçbir şey çıkmaz.
Hatanın nedenine gelince de; C++ kütüphanesine beklenenin dışında bozuk veya yanlış bir değer gönderiliyor.
Bu değerin 0 ile 255 arasında olması gerekiyor. Ama hataya bakılırsa bu değer ya negatif sayıyı temsil ediyor, ya da tamamen nullptr(hiçbir şeyi temsil etmiyor.)
 
assertion hatasını zaten sadece debugda verir. Release ve Distrubute modlarında bu hatayı almazsın.
Ayrıca attığın görselden anladığım kadarıyla server kodlarında çağrı yığını takibi yapılmıyor. Dolayısıyla yapabileceğin tek şey söylendiği gibi sistemleri ve düzenlemeleri tek tek kapatıp geri alarak hangi düzenlemenin buna sebep olduğunu bulmak.

Görseldeki kod ise bellek kodudur, src kodu değil. Oradan hiçbir şey çıkmaz.
Hatanın nedenine gelince de; C++ kütüphanesine beklenenin dışında bozuk veya yanlış bir değer gönderiliyor.
Bu değerin 0 ile 255 arasında olması gerekiyor. Ama hataya bakılırsa bu değer ya negatif sayıyı temsil ediyor, ya da tamamen nullptr(hiçbir şeyi temsil etmiyor.)
trap.h:
Genişlet Daralt Kopyala
#if defined(CRYPTOPP_DEBUG)
# if defined(UNIX_SIGNALS_AVAILABLE) || defined(__CYGWIN__)
#  define CRYPTOPP_ASSERT(exp) {                                  \
    if (!(exp)) {                                                 \
      std::ostringstream oss;                                     \
      oss << "Assertion failed: " << __FILE__ << "("              \
          << __LINE__ << "): " << __func__                        \
          << std::endl;                                           \
      std::cout << std::flush;                                    \
      std::cerr << oss.str();                                     \
      raise(SIGTRAP);                                             \
    }                                                             \
  }
# elif CRYPTOPP_DEBUG && defined(CRYPTOPP_WIN32_AVAILABLE)
#  define CRYPTOPP_ASSERT(exp) {                                  \
    if (!(exp)) {                                                 \
      std::ostringstream oss;                                     \
      oss << "Assertion failed: " << __FILE__ << "("              \
          << __LINE__ << "): " << __FUNCTION__                    \
          << std::endl;                                           \
      std::cout << std::flush;                                    \
      std::cerr << oss.str();                                     \
      if (IsDebuggerPresent()) {DebugBreak();}                    \
    }                                                             \
  }
# endif // Unix or Windows
#endif  // CRYPTOPP_DEBUG


C++:
Genişlet Daralt Kopyala
#ifndef CRYPTOPP_TRAP_H
#define CRYPTOPP_TRAP_H

#include "config.h"

#if defined(CRYPTOPP_DEBUG)
#  include <iostream>
#  include <sstream>
#  if defined(UNIX_SIGNALS_AVAILABLE)
#    include "ossig.h"
#  elif defined(CRYPTOPP_WIN32_AVAILABLE) && !defined(__CYGWIN__)
     extern "C" __declspec(dllimport) void __stdcall DebugBreak();
     extern "C" __declspec(dllimport)  int __stdcall IsDebuggerPresent();
#  endif
#endif // CRYPTOPP_DEBUG
chatgptye sordum debugbreak fonksiyonlarını ara dedi crytop içerisinde trap.h dosyasında var buradan hata dönen veriye ulaşabilir miyim
 
trap.h:
Genişlet Daralt Kopyala
#if defined(CRYPTOPP_DEBUG)
# if defined(UNIX_SIGNALS_AVAILABLE) || defined(__CYGWIN__)
#  define CRYPTOPP_ASSERT(exp) {                                  \
    if (!(exp)) {                                                 \
      std::ostringstream oss;                                     \
      oss << "Assertion failed: " << __FILE__ << "("              \
          << __LINE__ << "): " << __func__                        \
          << std::endl;                                           \
      std::cout << std::flush;                                    \
      std::cerr << oss.str();                                     \
      raise(SIGTRAP);                                             \
    }                                                             \
  }
# elif CRYPTOPP_DEBUG && defined(CRYPTOPP_WIN32_AVAILABLE)
#  define CRYPTOPP_ASSERT(exp) {                                  \
    if (!(exp)) {                                                 \
      std::ostringstream oss;                                     \
      oss << "Assertion failed: " << __FILE__ << "("              \
          << __LINE__ << "): " << __FUNCTION__                    \
          << std::endl;                                           \
      std::cout << std::flush;                                    \
      std::cerr << oss.str();                                     \
      if (IsDebuggerPresent()) {DebugBreak();}                    \
    }                                                             \
  }
# endif // Unix or Windows
#endif  // CRYPTOPP_DEBUG

chatgptye sordum debugbreak fonksiyonlarını ara dedi crytop içerisinde trap.h dosyasında var buradan hata dönen veriye ulaşabilir miyim
Bunlara dokunma. Buralardan bir şey bulamazsın.
Sorunun kaynağı yaptığın düzenlemelerin birinde bir yerlerde, bunlarda değil.
 
Bunlara dokunma. Buralardan bir şey bulamazsın.
Sorunun kaynağı yaptığın düzenlemelerin birinde bir yerlerde, bunlarda değil.
hmm anladım peki burdan yola çıkarak hangi dosyadan çağrıldığını bulamaz mıyız

#ifndef __WIN32__
void* AsyncSQLThread(void* arg)
#else
unsigned int __stdcall AsyncSQLThread(void* arg)
#endif

C++:
Genişlet Daralt Kopyala
#ifndef __WIN32__
        m_mtxQuery = new pthread_mutex_t;
        m_mtxResult = new pthread_mutex_t;

        if (0 != pthread_mutex_init(m_mtxQuery, NULL))
        {
            perror("pthread_mutex_init");
            exit(0);
        }

        if (0 != pthread_mutex_init(m_mtxResult, NULL))
        {
            perror("pthread_mutex_init");
            exit(0);
        }

        pthread_create(&m_hThread, NULL, AsyncSQLThread, this);
#else
        m_mtxQuery = new CRITICAL_SECTION;
        m_mtxResult = new CRITICAL_SECTION;

        ::InitializeCriticalSection(m_mtxQuery);
        ::InitializeCriticalSection(m_mtxResult);

        m_hThread = (HANDLE)::_beginthreadex(NULL, 0, AsyncSQLThread, this, 0, NULL);
        if (m_hThread == INVALID_HANDLE_VALUE)
        {
            perror("CAsyncSQL::Setup");
            return false;
        }
#endif
----------------------
şu aşağıdaki satırdaki __stdcall kısımını arattım beni AsyncSQL.cpp dosyasında yukarıdaki koda yönlendirdi acaba burasıyla alakalı olabilir mi
Kod:
Genişlet Daralt Kopyala
     extern "C" __declspec(dllimport) void __stdcall DebugBreak();
     extern "C" __declspec(dllimport)  int __stdcall IsDebuggerPresent();

----------------------Kaptanın paylaşmış olduğu u10 da hiç birşey eklemeden denedim ve oda aynı hatayı verdi!
 
Son düzenleme:
Senin sorunun debugbreak değil. Debugbreak assertion hatası sonrası çağrılan fonksiyondur. Debugbreak ile bir işin yok, assert nereden patlıyorsa onu bulman gerek. Kaptanın filesi hakkında bilgim yok, hiç kullanmadım. Belki kullanan diğer üyeler daha fazla bilgi verebilir.
 
Senin sorunun debugbreak değil. Debugbreak assertion hatası sonrası çağrılan fonksiyondur. Debugbreak ile bir işin yok, assert nereden patlıyorsa onu bulman gerek. Kaptanın filesi hakkında bilgim yok, hiç kullanmadım. Belki kullanan diğer üyeler daha fazla bilgi verebilir.
.pdb dosyasını açamıyordu onu düzelttim şuanda hata satırı olarak şurayı gösteriyor
C++:
Genişlet Daralt Kopyala
#if defined _DEBUG

extern "C" int __cdecl _chvalidator(int const c, int const mask)
{
    _ASSERTE(c >= -1 && c <= 255);
    return _chvalidator_l(nullptr, c, mask);
}

extern "C" int __cdecl _chvalidator_l(_locale_t const locale, int const c, int const mask)
{
    _ASSERTE(c >= -1 && c <= 255);

    _LocaleUpdate locale_update(locale);

    return __acrt_locale_get_ctype_array_value(locale_update.GetLocaleT()->locinfo->_public._locale_pctype, c, mask);
}

#endif // _DEBUG
 
Son düzenleme:
Aşağıdaki yorum satırına aldığım kısmı kapatınca asertion hatası çözülüyor fakat oyundaki db bağlantısında bir hata olusuyor

Kod:
Genişlet Daralt Kopyala
CLIENT_DESC [db_clientdesc] trying DBPacket() while not connected
Cube_Init locale/turkey/cube.txt
Blend_Item_init locale/turkey/blend.txt
[PackageCryptInfo] . is not crypt file. pass!
[PackageCryptInfo] .. is not crypt file. pass!
CLIENT_DESC [db_clientdesc] trying DBPacket() while not connected
CLIENT_DESC [db_clientdesc] trying DBPacket() while not connected
SYSTEM: Trying to connect to localhost:15900
SYSERR: Mar 26 22:50:11 :: socket_connect: HOST localhost:15900, could not connect.
connect: No such file or directory
CLIENT_DESC [db_clientdesc] trying DBPacket() while not connected
CLIENT_DESC [db_clientdesc] trying DBPacket() while not connected
CLIENT_DESC [db_clientdesc] trying DBPacket() while not connected
SYSTEM: Trying to connect to localhost:15900
SYSERR: Mar 26 22:50:14 :: socket_connect: HOST localhost:15900, could not connect.
connect: No such file or directory

fishing.cpp
C++:
Genişlet Daralt Kopyala
            do
            {
                strlcpy(szCol2, start, MIN(sizeof(szCol2), (tab - start) + 1));
                szCol2[tab - start] = '\0';

                /*trim_and_lower(szCol2, szCol, sizeof(szCol));*/ BU SATIRDA PROBLEM BURAYI SİLİNCE DÜZELİYOR AMA BAĞLANTI ACILMIYOR FAKAT ASERTİON HATASI ÇÖZÜLÜYOR

Bu kısımda ki problemi nasıl çözebilirim.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst