• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Identyfikacja błędu - source / crash.

Dark Magican

Batory 7.72 - map developer.
Joined
Jun 30, 2009
Messages
34
Reaction score
17
Location
Legnica
Cześć, chciałbym Was zapytać - w jaki sposób, mogę choć troszkę dowiedzieć się, który kod z SOURCE crashuje mi silnik? Czytałem o jakimś Debuggerze BDG, lecz nie mogę go nigdzie znaleźć. Silnik to XML i oczywiście Windows XP.

Z góry dziękuję za pomoc, reputy na pewno będą - o to się nie martwcie.

_/Regards!
 
Mam cały folder Source. Nic mi nie mówi GDB, napisałem że go znaleźć nie mogę - albo po prostu, nie wiem jak tego użyć. Mam na komputerze gdb-6.0 i nie wiem jak tego użyć.
 
Robię to w Dev'ie - wiesz, jestem świeży w tym. (wkompilowanie skryptów, no idzie mi źle) . Spróbuje Twoją metodę, na tą chwilę mogę Ci podziękować i zawiesić temat, do momentu aż nie napiszę aby zamknąć.

Nie widzę tu systemu reputacji, ale kliknę Like.

_/Regards!

btw. Ciężko mi określić winę crasha, poniewaz dzieje się to - w niespodziewanym momencie, zostawiłem serwer na noc (aby sprawdzić czy znów będzie crash) i serwer miał uptime 15h bez crasha.


//Kliknąłem Debug w Dev i wyszło takie coś:


Code:
obj/player.o(.text+0x11e49): In function `ZN6Player19addSkillTryInternalEii':
C:/Dev-Cpp/include/c++/3.4.2/ostream:193: undefined reference to `Creature::getName() const'
collect2: ld returned 1 exit status

make.exe: *** [YurOTS.exe] Error 1

Execution terminated
 
Last edited:
Wybacz - nie rozumiem o co chodzi :p Naprawdę jestem w tym nowy, staram się to wszystko jakoś ogarnąć. :)

@Edit

Znalazłem - w Project Options w jakimś okienku, kliknąłęm na creature.cpp i jest zaznaczone Include in Linking.

Teraz, po kliknięciu DEBUG odpala się serwer, także poczekam do crasha teraz :)

_/Regards.

@Edit2

Nadal mam ten sam błąd.

Błąd tyczy się:

Code:
void Player::addSkillTryInternal(int skilltry,int skill){

    skills[skill][SKILL_TRIES] += skilltry;
    //for skill level advances
    //int reqTries = (int) ( SkillBases[skill] * pow((float) VocMultipliers[skill][voc], (float) ( skills[skill][SKILL_LEVEL] - 10) ) );
#if __DEBUG__
    //for debug
    cout << Creature::getName() << ", has the vocation: " << (int)vocation << " and is training his " << getSkillName(skill) << "(" << skill << "). Tries: " << skills[skill][SKILL_TRIES] << "(" << getReqSkillTries(skill, (skills[skill][SKILL_LEVEL] + 1), vocation) << ")" << std::endl;
    cout << "Current skill: " << skills[skill][SKILL_LEVEL] << std::endl;
#endif
    //Need skill up?
    if (skills[skill][SKILL_TRIES] >= getReqSkillTries(skill, (skills[skill][SKILL_LEVEL] + 1), vocation)) {
        skills[skill][SKILL_LEVEL]++;
        skills[skill][SKILL_TRIES] = 0;
        skills[skill][SKILL_PERCENT] = 0;
        std::stringstream advMsg;
        advMsg << "You advanced in " << getSkillName(skill) << ".";
        client->sendTextMessage(MSG_ADVANCE, advMsg.str().c_str());
        client->sendSkills();
    }
    else{
    //update percent
    int new_percent = (unsigned int)(100*(skills[skill][SKILL_TRIES])/(1.*getReqSkillTries(skill, (skills[skill][SKILL_LEVEL]+1), vocation)));

        if(skills[skill][SKILL_PERCENT] != new_percent){
            skills[skill][SKILL_PERCENT] = new_percent;
            client->sendSkills();
        }
    }
}


Gdy usunę tą linijkę:

Code:
    cout << Creature::getName() << ", has the vocation: " << (int)vocation << " and is training his " << getSkillName(skill) << "(" << skill << "). Tries: " << skills[skill][SKILL_TRIES] << "(" << getReqSkillTries(skill, (skills[skill][SKILL_LEVEL] + 1), vocation) << ")" << std::endl;


Kompilacja kończy się powodzeniem, tylko nie wiem jak ważną rolę gra ta linijka. Bez niej serwer funkcjonuje, skille, level i awanse wszystko gra.
 
Last edited:
A co do tego DEBUG - trzeba wpisywać jakieś komendy, czy coś?

Wcześniej, nagle serwer się zatrzymał - nie było crasha ani nic, nie pokazało żadnego błędu. Dlaczego tak się stało ?:) Czy to normalne..
 
Back
Top