[已解决]ns-3使用FlowMonitor报错 terminated with signal SIGSEG terminated with signal SIGSEGV

出问题的代码如下:

FlowMonitorHelper flowmon;
Ptr<FlowMonitor> monitor = flowmon.InstallAll();

Ptr<Ipv4FlowClassifier> classifier = DynamicCast<Ipv4FlowClassifier> (flowmon.GetClassifier ());
std::map<FlowId, FlowMonitor::FlowStats> stats = monitor->GetFlowStats ();

结果发现命令行报错如下:
terminated with signal SIGSEGV. Run it under a debugger to get more information (./waf --run --command-template=“gdb --args %s ”).

直到我看见论坛时发现!!
在这里插入图片描述

原来是实例化FlowMonitor的位置错了,他必须在给节点绑定IP之后。

然后我把代码放在Simulator::Run ()之后,结果当我通过monitor->GetFlowStats ()获取的map内容为空!!

最终解决!!!
还是代码位置的问题。最后正确代码是这样的:在 Simulator::Stop (Seconds (m_totalTime)); 前面声明FlowMonitorHelper,并将FlowMonitor安装到每个节点上。在 Simulator::Run (); 后面在通过他们俩来获取自己想要的信息。

  CreateNodes ();
  CreateDevices (tr_name);
  SetupMobility ();
  InstallInternetStack (tr_name);
  InstallApplications ();

  std::cout << "\nStarting simulation for " << m_totalTime << " s ...\n";

  FlowMonitorHelper flowmon;
  Ptr<FlowMonitor> monitor = flowmon.InstallAll();

  CheckThroughput ();

  Simulator::Stop (Seconds (m_totalTime));

  AnimationInterface anim("dsdv.xml");
  Simulator::Run ();

  Ptr<Ipv4FlowClassifier> classifier = DynamicCast<Ipv4FlowClassifier> (flowmon.GetClassifier ());
  std::map<FlowId, FlowMonitor::FlowStats> stats = monitor->GetFlowStats ();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值