NS3的记录系统

来源:互联网 发布:市场营销网络 编辑:程序博客网 时间:2024/06/06 08:20
  1. NS-3中的logging component简介

很多大型的系统都会支持“记录功能”(logging facility), NS-3也同样如此。不同的是其他的系统可能只记录一些“警告信息”(warning messages)、“错误信息”(error messages)或者“查错信息”(debug messages)。

但是NS-3提供多层次的可选择的信息记录功能。

 

NS-3提供7个层次的信息记录:

•LOG_ERROR — 记录错误信息 (相关联的宏: NS_LOG_ERROR);
• LOG_WARN — 记录警告信息(相关联的宏: NS_LOG_WARN);
• LOG_DEBUG — 记录相对少的自适应(ad-hoc)查错信息(相关联的宏: NS_LOG_DEBUG);
• LOG_INFO — 记录程序运行的信息(相关联的宏: NS_LOG_INFO);
• LOG_FUNCTION — 记录描述被调用的函数的信息(两个相关联的宏:NS_LOG_FUNCTION, 用于成员函数, and NS_LOG_FUNCTION_NOARGS, 用于静态方程);
• LOG_LOGIC – Log messages describing logical flow within a function (相关联的宏: NS_LOG_LOGIC);
• LOG_ALL — Log everything mentioned above (没有相关联的宏).

 

层次记录类型:

LOG_INFO 只激活NS_LOG_INFO 这个宏

LOG_LEVEL_INFO 激活三个宏: NS_LOG_DEBUG, NS_LOG_WARN, NS_LOG_ERROR

NS_LOG_UNCOND  无条件的记录相关信息

 

2. 例子

first.cc 这个代码里本身调用了记录功能(LOG_LEVEL_INFO)记录client和server的信息。

这里介绍一种在sh-like shell environment 中进行修改logging component

语法:

sh-like shell:    "VARABLE=VALUE"

csh-like shell:  "setenv VARIABLE value"

 a)

code: export NS_LOG=UdpEchoClientApplication=level_all             // 对client修改logging component;

//这个命令在目录ns-3-dev下和ns-3-allinone下运行都是有效的,但是./waf需要在ns-3-dev目录下运行才是有效的

结果:

 

注意: 此处用单引号是为了与C++中的scope operator区分开

用OR operation还增加操作

b) 对比两个不同的命令

 

加单引号是因为避免‘竖线  |’和unix中 pipe connector 混淆,在这里‘|’表示OR operation。

区别:所有涉及到log component的信息都会加上方程的前缀

现在为加前缀的就是来自echo server application的了

c) 显示模拟时间

命令:export ’NS_LOG=UdpEchoClientApplication=level_all|prefix_func|prefix_time:UdpEchoServerApplication=level_all|prefix_func|prefix_time’

对不同的函数进行操作,中间用单引号隔开

结果:

分析:

    问题:为什么服务器受到packet之后要返回一个同样大小的(是同一个吗?)代码中没有server返回packet的命令

d) 记录所有信息并生成输出文件

命令:

export ’NS_LOG=*=level_all|prefix_func|prefix_time’

用通配符替换被操作函数

./waf --run scratch/myfirst > log.out 2>&1

制定输出文件,然后在编辑器中打开,搜索想要找到信息,用于debugg.

问题:文件保存到哪里了

答: 就在干操作目录下 文件名为log.out的文件

 

原创粉丝点击