NS2调试笔记

Debugging用于处理编程错误
变量踪迹用于跟踪所考虑变量的变化情况
报文踪迹用于跟踪报文通过网络检测点的细节
仿真结果编辑用于收集仿真结果并计算相关性能


两类编程错误:编译阶段错误和运行阶段错误
(1)编译阶段错误(该阶段错误不会存在与OTcl域)
1.将C++(.cc或.h)文件转化成目标文件(.o)阶段错误:编译器不能理解C++代码
主要错误原因:
错误的C++语法;使用未定义的变量和方法;
2.编译器链接目标文件生成可执行文件阶段错误:对C++文件进行不恰当的链接引起
主要错误原因:
从一个抽象类(带有纯虚函数)实例化对象:简单处理方法是将纯虚函数实现成空函数

修改了基类而没有重新创建子类的目标文件:Makefile没有恰当定义,当一个类发生修改时,其子类的目标文件并不会被编译器重新产生。解决方法是在Makefile文件中正确指定依赖关系或者删除所有之前生成的目标文件,重新编译产生新的目标文件。

(2)运行阶段错误(在NS2仿真阶段出现)
主要是错误的OTcl或C++编程导致。OTcl实现了错误信息捕获机制,因而错误信息含有非常细节且有用的信息,而C++没有实现错误信息捕获机制,错误信息(例如,segmentation fault)非常短且没有信息量。
OTcl错误主要是语法错误或者引用了不存在的instvars,instprocs或者commands。C++运行时错误包括segmentation fault(对内存内容进行了非法访问,如数组边界溢出);没有实现非纯虚函数(需要子类实现的方法由于没有实现而调用父类同名方法,而父类的同名方法就是打印错误信息)。


调试准则(如何调试)
两个调试工具:断点和变量查看器
两种调试器:Don Lib调试器(OTcl)和GDB(C++,手动调试)

你可能感兴趣的:(编程,c,工具,makefile,编译器,debugging)