用valgrind检测ns3程序内存错误

前言:近来用 ns3 仿真,期间各种内存错误搞得焦头烂额,导师建议可以用 valgrind 试试,今天学习了下,果然神奇,以下做点记录。

 

关于 valgrind

 

一句话介绍

valgrind 是 linux 下检测 c/c++ 程序内存错误的工具(开源的哦),其中主要的工具叫做 Memcheck,看名字就知道干嘛的。

 

对于普通的 c/c++ 程序如何使用

1、使用之前需要将目标源码的调试信息打开。对于 gcc  就是加上 - g  命令。

2、使用命令

valgrind --leak-check=yes myprog arg1 ... arg n


输出

输出大概长这样:

 

==进程号== 错误类型
==栈追踪== 调用函数名 行号


如何用其检测 ns3 程序

编译时输入

./waf shell

之后的一切和普通的 c/c++ 文件一样。

不过值得说的一点是,如果源文件放在 scratch 中,编译产生的文件在 build/scratch 目录下同名文件

 

例:

假设我目前的工作目录为 ns3 的根目录

假设我的源文件是 ./scratch/test.cc 无运行参数

那么我的操作就是

$ ./waf shell

运行完之后输入

$ valgrind --leak-check=yes build/scratch/test

 

最后ps:如果 ns3 的脚本是用 python 写的,不太清楚能不能用 gdb 来运行,不过原来用 ns2 的时候,gdb 是可以运行 tcl 脚本的。

 

你可能感兴趣的:(用valgrind检测ns3程序内存错误)