DCE打印路由时某种情况下的gdb结果

结果如下,

(gdb) bt
#0  __dynamic_cast () at ../../../../gcc-4.8.2/libstdc++-v3/libsupc++/dyncast.cc:50
#1  0x000000000041390c in ns3::Ptr<ns3::Ipv4> ns3::Object::GetObject<ns3::Ipv4>() const () at /home/gftp/tool/network/newbake/dce/build/include/ns3.23/ns3/object.h:459
#2  0x00007ffff59d7ee8 in ns3::AnimationInterface::GetIpv4RoutingTable(ns3::Ptr<ns3::Node>) () at ../src/netanim/model/animation-interface.cc:1903
#3  0x00007ffff59d7b4d in ns3::AnimationInterface::TrackIpv4Route() () at ../src/netanim/model/animation-interface.cc:1883
#4  0x00007ffff59e5739 in ns3::EventImpl* ns3::MakeEvent<void (ns3::AnimationInterface::*)(), ns3::AnimationInterface*>(void (ns3::AnimationInterface::*)(), ns3::AnimationInterface*)::EventMemberImpl0::Notify() () at ./ns3/make-event.h:323
#5  0x00007ffff73765e7 in ns3::EventImpl::Invoke() () at ../src/core/model/event-impl.cc:51
#6  0x00007ffff737b2ac in ns3::DefaultSimulatorImpl::ProcessOneEvent() () at ../src/core/model/default-simulator-impl.cc:147
#7  0x00007ffff737b638 in ns3::DefaultSimulatorImpl::Run() () at ../src/core/model/default-simulator-impl.cc:200
#8  0x00007ffff7377378 in ns3::Simulator::Run() () at ../src/core/model/simulator.cc:204
#9  0x0000000000412572 in main () at ../myscripts/ns-3-dce-quagga/example/dce-quagga-ospfd.cc:580
(gdb)

按照堆栈看是从节点找其Ipv4 object没有找到,但我已经分配了节点,并把Ipv4栈加入了。


原因:

    经过检查,发现是运行的时候使用了本地函数中的node (ncAll), 这个ncAll应该声明为全局变量。

    NodeContainer ncAll;
    ncAll.Create (4);

分析:

要保证仿真在Run的时候分配的节点都还在,所以分配的节点至少都要是全局变量。


你可能感兴趣的:(DCE打印路由时某种情况下的gdb结果)