tcl-debug-2.0 安装调试 NS2.34

1、./configure --prefix=/path

prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。

如果配置prefix,如:./configure --prefix=/usr/local/test可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。

2、./configure --with ssl=/path

./configure 这个脚本是开发者提供的,with-ssl 这个选项的行为也是开发者定义的。

一般情况下开发者会枚举几个常见的 ssl 路径在 configure 脚本里面,这样如果用户不输入 with-ssl 参数的时候 configure 脚本能一定程度上自动探测到系统里面的 ssl 库所在位置。

也有一种情况是开发者默认让 with-ssl 这个参数关闭,也就是说用户必须使用这个参数 configure 脚本才会去检测 ssl 库的位置。

为 with-ssl 加上一个路径的这种用法,configure脚本会忽略掉自动探测 ssl 位置的那段逻辑,直接使用用户输入的路径。

        tcl 安装 configure 其他参数详解见此贴:https://blog.csdn.net/linuxarmsummary/article/details/10947715

3、安装 tcl-debug-2.0

https://blog.csdn.net/linuxarmsummary/article/details/10947715

https://blog.csdn.net/bill_chuang/article/details/8811591

https://blog.csdn.net/flyuniverse_shell/article/details/5956618

https://www.cnblogs.com/helloWaston/p/4544875.html

(1)下载 tcl-debug-2.0 到 /home/ns-allinone-2.34 目录下,并解压,执行

$cd /home/ns-allinone-2.34/tcl-debug-2.0

$./configure --prefix=/home/ns-allinone-2.34/ns-2.34 --with-tcl=/home/ns-allinone-2.34/tcl8.4.18/unix/

$make

(2)拷贝生成的库文件 libtcldbg.a 到 /home/ns-allinone-2.34/ns-2.34/lib 目录下

$cp libtcldbg.a /home/ns-allinone-2.34/ns-2.34/lib

(3) 进入ns-2.34目录下面,即 /home/pengyu/ns-allinone-2.34/ns-2.34
(4) 重新配置NS-2以便启用tcl-debug.
      $ ./configure --with-tcldebug=/home/pengyu/ns-allinone-2.34/tcl-debug-2.0

      出现过以下两行则表示配置成功:

      checking for libtcldbg... -L/home/share/ns-allinone-2.33/tcl-debug-2.0 -ltcldbg
      checking dmalloc... not requested with --with-dmalloc

(5)删除以前的编译纪录
           $ make clean
(6)重新编译NS-2
          $ make   
         现在tcl-debug已经嵌入到NS-2的可执行文件"ns.exe"中去了
(7)检查NS-2是否能够正常运行。随便选择一个脚本测试一下就可以了
         $ ns  example.tcl

4、ns2 make 出现下面情况

make[1]: Entering directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/cmu-scen-gen/setdest'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/cmu-scen-gen/setdest'
make[1]: Entering directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/dec'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/dec'
make[1]: Entering directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/epa'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/epa'
make[1]: Entering directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/nlanr'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/nlanr'
make[1]: Entering directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/ucb'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/ns-allinone-2.34/ns-2.34/indep-utils/webtrace-conv/ucb'

 

该现象不影响使用,程序能跑。。。此贴已解决此问题:https://blog.csdn.net/zhf100404218/article/details/51152817

5、检查tcl-debug是否能够正常工作。
    你可以通过添加debug 1在你的脚本中设置断点。示例如下:
    (1)从目录~ns/tcl/ex directory 里面选择一个脚本, 如:wireless-test.tcl,
        利用文本编辑器编辑该脚本:
        set ns_  [new Simulator]
        debug 1;  # 在这个位置添加这么一行代码
        set chan [new $opt(chan)]

    (2)运行 wireless-test.tcl
         $ ns wireless-test.tcl
        
    运行脚本之后,如果你成功安装,程序会停在断点处,并会出现以下信息提示:
         2: lappend auto_path $dbg_library
         dbg2.0>

使用:

在NS2中调试TCL/OTCL脚本了。设断点的方法是,直接在脚本文件中相应的位置加上debug 1。一些基本的命令如下:
s 单步执行(进入进程)
n 单步执行(不进入进程)
c 继续
r 继续执行直到从过程中返回
u 转至上级作用域
d 转至下级作用域
w 列出调用栈
b 设置,清除或显示断点
h 帮助

运行脚本,就会在相应的断点位置停下来,可以使用puts命令来打印输出各种变量的值。info也是一个我常用的命令。
info exists 
info class //查询一个对象的类名
info instances //查询一个类的所有实例
info instprocs //查询一个类的所有实例过程
info vars
info superclass/subclass //查询一个类的超类/子类

 

6、gdb调试C++部分

如果系统不自带gdb,则先安装,安装好后需要修改$NS_HOME/ns-2.34中的Makefile文件,使得编译后的可执行文件带调试信息
将原来文件中的
CCOPT =  -Wall -Wno-write-strings 
中间添加-g,即
CCOPT =  -Wall -g -Wno-write-strings 
然后重新编译
make clean
make

使用时,
#cd $NS_HOME/ns-2.34
#gdb ns
#gdb>run test.tcl
然后如果要在某个源文件中添加断点
(gdb)>b mac/mac-sensor.cc (注意,这里是源文件,不是可执行文件)
(gdb)>b mac/wireless-phy.cc
(gdb)>run XXX.tcl

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值