用C ++打印Handler类的名称

时间:2017-03-10 15:20:59

标签: c++ class ns2

我是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 个答案:

答案 0 :(得分:1)

  

有一个简单的方法可以让我在这里找到handler_类的内容以及我应该在哪里寻找句柄(p)?

p->handler_->handle(p);设置一个断点并进入它。

或者,在gdb中,执行info symbol p->handler_->handle

或者将nullptr传递给handle,希望它崩溃并转储核心或显示堆栈跟踪。

您还可以获取对象的类损坏的名称,如typeid(*p->handler_).name()