Вывести имя класса 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()
,