基于Debugging in OPNET withMicrosoft Visual C++ 调试的文档(资料下载区提供),有一些经验总结如下: (1)修改Preference中的环境变量时,/Od与/Zi之间要有空格,另外注意O不是0。 (2)除了修改bind_shobj_flags、comp_flags、comp_flags_cpp外,还要修改bind_static_flags:即后面添加/DEBUG。可以从文档中的示意图中看出。记着,中间一定要有空格。 (3)如出现上述设置上的问题,可以从编译结果中查看问题。(建议可以故意在一个process model中加一条语法错误的语句,然后编译看列出的出错信息。) (4)在attach process时,如果看不到任何process,尽量关闭不必要的程序,只留下opnet的project窗口和VC。如果还不行,就要给VC打SP5补丁了。不过有一种更简单的方法,就是在任务管理器中,在进程中找到op_runsim_dev.exe进程,右键,然后调试,即可和VC进行联调。 (5)修改Simulation model的environment files时,一般不需将Force Compile设为enable,因为调试时一般process model都已编译好。如果把Force Compile设为enable的话,每次启动simulation都会把项目中包含的所有的process model重新编译,会耗很长时间。但是为了保证代码为最新改写过得,建议还是enable为好。 (6)如果不想让debug窗口自动关闭,可以把consle_exit_pause改为TRUE,仿真完后会提示Press <ENTER> to continue.按两次<ENTER>才会关闭debug窗口。 (7)编译的时候产生调试信息的参数是 /Z7 或 /Zi,(注意:/Z8并不是合法的参数)。调试时还需要关闭编译器的优化功能,所以还要加上/Od。连接的时候需要保留调试信息,所以在bind_shobj_flags后面要加上 /DEBUG。 (8) config simulation里面的debug,目的是让op_runsim运行在debug模式下,等效于console下面的 -debug。force_compile的作用是每次编译时都重建所有的模块,以使你在VC下面看到的源程序都是最新的。 (9)在VC调试时,从断点后开始单步运行,最后总会走到一个向汇编中的机器代码的地方。odb那边也不能敲任何命令。这很正常,那个汇编的地方就是OPNET的内核之类的东西。不用管它,在VC里面再选run就行了。程序会运行到VC的下一个断点,或者ODB重新可以敲命令了。 (10)最基本的一个问题,在OPNET调试时,报错: bind_so_msvc: Unable to execute bind program (Win32 error code: 2) Check that Visual C++ has been installed correctly, and that its BIN directory is included in the Path environment variable. 那么可以按照一般的方法来手动添加环境变量,但是就笔者经验,即使当时通过,之后可能还会出现问题。最彻底的办法就是VC和OPNET重装一遍,先安装VC,安装时,要选择注册环境变量。OPNET也不能偷懒,就一步一步按顺序安装吧。
这些都是笔者和一些使用OPNET的朋友的一些总结,有什么不足还望大家赐教,互相交流,共同进步!
|