我是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)
吗?
答案 0 :(得分:1)
有一个简单的方法可以让我在这里找到handler_类的内容以及我应该在哪里寻找句柄(p)?
在p->handler_->handle(p);
设置一个断点并进入它。
或者,在gdb
中,执行info symbol p->handler_->handle
。
或者将nullptr
传递给handle
,希望它崩溃并转储核心或显示堆栈跟踪。
您还可以获取对象的类损坏的名称,如typeid(*p->handler_).name()
。