在 C++ 中打印处理程序 class 的名称

Print name of Handler class in 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_ 的 class 是什么以及我应该在哪里寻找 handle(p)

is there an easy way for me to find out here what the class of handler_ is and where I should look for handle(p)?

p->handler_->handle(p);处设置断点并单步执行。

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

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

您还可以获得对象的 class mangled 名称,例如 typeid(*p->handler_).name().