NS3之路---Tweaking

TWEAKING

首先,关于这一章,实在不知道这个名字该如何翻译,因此在此直接使用英文。

但是主要讲了三部分内容,分别介绍了对日志模块、命令行参数、跟踪系统的使用。

  1. 日志模块

在前面使用过的first.cc中已经简单介绍了下相关的日志类。一般来说,大规模的系统中都会使用日志记录相关信息,ns3同样如此。而通常只有标准错误(stderr)信息才会被输出到控制台。某些系统也会将警告信息输出。我们需要了解的是,日志的存在给我们提供了详细的系统运行过程,使我们的调试过程变得相对容易。

Ns3日志模块提供了一个很好的日志系统,我们可以随时随地的从中获取我们想要的信息。目前ns3定义了7种日志类型(LOG_TYPE)。

l  LOG_ERROR:错误信息,相关宏为NS_LOG_ERROR

l  LOG_WARN:警告信息,相关宏为NS_LOG_WARN

l  LOG_DEBUG:调试信息,相关宏为NS_LOG_DEBUG

l  LOG_INFO:程序运行过程信息,宏为NS_LOG_INFO

l  LOG_FUNCTION:函数调用的描述信息,宏为NS_LOG_FUNCTION(成员函数)和NS_LOG_FUNCTION_NOARGS(静态函数)

l  LOG_LOGIC:函数逻辑信息,宏为NS_LOG_LOGIC

l  LOG_ALL:记录以上所有信息,没有宏。

对于以上每种日志类型,也有等级之分,从上至下递增。使用LOG_LEVEL_TYPE启动层级作用。默认情况下,日志类型等级以下的信息都会被记录(包括自身)。例如使用LOG_INFO只记录宏NS_LOG_INFO定义的信息,而LOG_LEVEL_INFO,则会记录NS_LOG_ERROR,NS_LOG_WARN,NS_LOG_DEBUG定义的信息。

Ns3也提供了另外一个无条件日志类,NS_LOG_UNCOND,记录相关无条件信息。

启动NS_LOG

在第一个例子中,在运行完之后可以看到一系列的输出信息。这些日志信息是由UdpEchoServerApplication和UdpEchoClientApplication记录的,我们可以通过修改NS_LOG环境变量,让其输出信息满足我们的需求。

在first.cc中,有个例子启用了UdpEchoServerApplication的日志:

LogComponentEnable (“UdpEchoServerApplication”, LOG_LEVEL_INFO);

从这句代码中可以看到将UdpEchoServerApplication这个组件的日志等级设置为INFO并将其启用。该过程也可以通过以下方法完成:

l  使用命令行参数设置NS_LOG环境变量

$ export NS_LOG = UdpEchoServerApplication = LEVEL_ALL

上述命令的作用其实就相当于在程序中做如下设置,其中左边是要修改的组件的名字(不是类的名字),右边则是日志的类型:

UdpEchoServerApplication = LEVEL_ALL

如此一来就改变了获取到的日志信息量。

另外为了看出是哪个组件的信息, 我们可以再上述命令中添加一项:

$ export ‘NS_LOG = UdpEchoServerApplication = LEVEL_ALL | prefix_func’

注意到,上述条件必须添加单引号。而且在日志等级和前缀之间使用竖线表示OR操作。于是我们就能够清楚的看到信息是来自于哪个组件。上述命令只记录了一个组件,如果要修改多个组件呢?我们可以使用冒号来表示,如下:

$ export ‘NS_LOG = UdpEchoServerApplication = LEVEL_ALL | prefix_func :   UdpEchoClientApplication = LEVEL_ALL | prefix_func ’

除了查看组件名字的前缀,我们也可以查看当前仿真时间,使用prefix_time,同样也使用竖线分隔。

设置全部组件的情况使用 * 作为通配符,替换上述的组件名字即可。

$ export ‘NS_LOG = * = LEVEL_ALL | prefix_func’

Ns3支持标准输出的重定向操作,将输出到屏幕的信息重新定位到文件中。

$ ./waf --run  PROGRAMFILE  >  LOG.out  2 >& 1

PS:>符号是重定向符号,那么1和2分别表示什么呢? 首先在Linux中,每个进程都和三个系统文件相关联,分别为标准输入stdin、标准输出stdout、标准错误stderr,而这三者对应的文件描述符分别为0,1,2。

并且,2 > 1表示的是将标准错误重定向到文件1中,而不是标准输出。因此需要使用&符号来表示,固为:2 > & 1的格式。

在代码中添加日志记录部分。通过宏调用日志组件,并将其添加到程序中。

日志组件的定义:

NS_LOG_COMPONENT_DEFINE (“First”);

定义完该组件之后变可以通过修改NS_LOG环境变量记录相关信息,例如:

$ export  NS_LOG = First = LEVEL_TYPE

在重新制定日志的相关信息之前,需要将之前建立的日志等级清除掉:

$ export NS_LOG =

 

  1. 2.   使用命令行参数

Ns3中提供了解析命令行参数的机制,可以通过命令行来设置程序中局部或者全局的变量。但要使用该解析器,就必须在使用之前先声明,如下:

int main (int argc,  char * argv[]) {

……

CommandLine cmd;       //声明了命令行对象

cmd.Parse(argc, argv);   //调用自定义方法解析参数

……

}

为了确认是否解析正确,可以通过打印相关参数识别。Ns3提供了--PrintHelp命令,使用打印函数不需要添加VALUE值,修改程序中的参数时需要有VALUE值。使用双引号将程序名称和参数包起来,如:

$ ./waf –run “YOUR-PROGRAM   --COMPONENT [= VALUE]”

钩子

(等待解析…….)

 

  1. 3.   使用跟踪系统

Ns3仿真在于将输出保存起来,用于后期分析。因此,其开发出了一套追踪系统,分为三个层次。

基本用户:直接使用系统产生标准的追踪源,允许自定义追踪源的产生组件。

中间用户:可以对系统的输出格式进行修改以满足自身的需求,也可以再不修改核心代码的情况下,添加新的追踪源。

高级用户:修改核心代码,添加任何想要追踪的细节源。

 

ASCII文件追踪

在程序运行之前(Simulator.Run())定义好ASCII文件,程序开始之后便开始了跟踪。最终结果是产生*.tr文件。下面定义了ASCII追踪实例,该实例创造一个文件流并跟踪你定义的组件变量。

AsciiTraceHelper ascii;

YOUR-COMPONENT-NAME.EnableAsciiAll (ascii.CreateFileStream(“*.tr”));

tr文件可以使用编辑器打开。具体解析过程涉及相关知识较多,详细参考NS3 tutorial第46-48页。

PCAP追踪

使用YOUR-COMPONENT-NAME.EnablePcapAll(“NAME”);便可以生成Pcap的追踪文件,值得说明的是NAME不需要后缀,会自动生成。

Pcap文件的打开工具有两种。1是图形化界面的WireShark,作为包嗅探器,可以显示整个运作过程。2是Linux提供的tcpdump命令。无法使用编辑器打开该类文件。

 

转载于:https://www.cnblogs.com/yibobo-blog/p/4940549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tweaking.com - Windows Repair 1.9.17老朽痴拙汉化版(系统修复)是一个免费的绿色软件,解压后就可以开始使用。windows是一个脆弱的操作系统,安装软件,过度优化等操作都会让其运行不稳定,或者崩溃。所以当你发现系统有小问题的时候,你就应该想办法修复它,从而避免错误的扩散。这次介绍的Windows Repair就是一个有针对性的修复软件,如果你束手无策,那么使用它可能会有意想不到的效果。这个软件支持的系统也是非常广泛。windows xp,2003,vista、2008、windows 7、windows 8 都可以使用它。   打开这个软件后,是一个向导式的界面,上面有步骤。其实我们只需要选中其中的“开始修复”界面,然后使用“自定义模式”这个自定义修复模式。   点击 开始 后就会看到自己选择需要修复的项目。 Windows Repair所有能够修复的windows问题:   1、重置注册表权限。   2、重置文件权限。   3、注册系统文件。   4、修复wmi.(一项核心的windows管理技术),可能也就是windows自带的“管理”功能。   5、修复windows防火墙。   6、修复ie浏览器。   7、修复MDAC和MS jet。(微软数据库访问组件和資料庫引擎)   8、还原host文件。   9、修复图标。 10、修复winsock和刷新DNS缓存。   11、删除临时文件。   12、修复代理设置。   13、不隐藏非系统文件。   14、修复windows更新功能。   http://download.csdn.net/detail/u010169080/6253289
Tweaking.com - Windows Repair 2.0.1老朽痴拙汉化便携版(系统修复)是一个免费的绿色软件,解压后就可以开始使用。windows是一个脆弱的操作系统,安装软件,过度优化等操作都会让其运行不稳定,或者崩溃。所以当你发现系统有小问题的时候,你就应该想办法修复它,从而避免错误的扩散。这次介绍的Windows Repair就是一个有针对性的修复软件,如果你束手无策,那么使用它可能会有意想不到的效果。这个软件支持的系统也是非常广泛。windows xp,2003,vista、2008、windows 7、windows 8 都可以使用它。   打开这个软件后,是一个向导式的界面,上面有步骤。其实我们只需要选中其中的“开始修复”界面,然后使用“自定义模式”这个自定义修复模式。   点击 开始 后就会看到自己选择需要修复的项目。 Windows Repair所有能够修复的windows问题:   1、重置注册表权限。   2、重置文件权限。   3、注册系统文件。   4、修复wmi.(一项核心的windows管理技术),可能也就是windows自带的“管理”功能。   5、修复windows防火墙。   6、修复ie浏览器。   7、修复MDAC和MS jet。(微软数据库访问组件和资料引擎)   8、还原host文件。   9、修复图标。 10、修复winsock和刷新DNS缓存。   11、删除临时文件。   12、修复代理设置。   13、不隐藏非系统文件。   14、修复windows更新功能。 ......
辽B代驾管理系统对代驾订单管理、用户咨询管理、代驾订单评价管理、代驾订单投诉管理、字典管理、论坛管理、公告管理、新闻信息管理、司机管理、用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行辽B代驾管理系统程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。辽B代驾管理系统的开发让用户查看代驾订单信息变得容易,让管理员高效管理代驾订单信息。 辽B代驾管理系统具有管理员角色,用户角色,这几个操作权限。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 辽B代驾管理系统针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理代驾订单信息,管理公告信息等内容。 辽B代驾管理系统针对用户设置的功能有:查看并修改个人信息,查看代驾订单信息,查看公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看代驾订单,删除代驾订单操作,新增代驾订单操作,修改代驾订单操作。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。新闻管理页面,此页面提供给管理员的功能有:新增新闻,修改新闻,删除新闻。新闻类型管理页面,此页面提供给管理员的功能有:新增新闻类型,修改新闻类型,删除新闻类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值