Вывести имя класса Handler в C++

Я новичок в C++ и пытаюсь понять некоторый код (планирование пакетов в NS2). В какой-то момент пакет проходит через следующий код:

    void 
    Scheduler::dispatch(Event* p, double t) 
    { 
            if ((t < clock_) && (p->uid_ != 0)) { 
                    fprintf(stderr, "ns: scheduler going backwards in time from %f to %f.\n", clock_, t); 
                    dumpq(); 
            } 
            if (p->uid_ != 0) { 
                    clock_ = t; 
                    p->uid_ = -p->uid_; // being dispatched 
                    p->handler_->handle(p); // dispatch                     
            } else { 
                    fprintf(stderr, "Warning: discarding Event without an a valid id\n"); 
            } 
    } 

Мой вопрос: есть ли простой способ узнать, что такое класс handler_ где я должен искать handle(p)?

1 ответ

Решение

Есть ли для меня простой способ узнать, что такое класс handler_ и где я должен искать handle(p)?

Установить точку останова на p->handler_->handle(p); и шагните в это.

Или в gdb, делать info symbol p->handler_->handle,

Или пройти nullptr в handle надеясь, что он выйдет из строя и сбросит ядро ​​или отобразит трассировку стека.

Вы также можете получить искаженное имя класса объекта, как typeid(*p->handler_).name(),

Другие вопросы по тегам