gdb和tcl-debug调试ns2代码

tcl-debug调试Otcl脚本

转自http://hi.baidu.com/weblong/blog/item/13c9fbea5fd5a8d7d539c9f8.html

1.下载 tcl-debug( 地址 http://expect.nist.gov/tcl-debug/tcl-debug.tar.gz),以版本2.28为例,解压到ns-allinone-2.28目录下面。
2. 编译tcl-debug,并且将产生的可加载的库文件复制到NS-2的库目录里面,具体步骤如下:
   1) 进入到tcl-debug目录下面
            $ cd tcl-debug-2.0
   2) 配置并且编译tcl-debug
        $ ./configure
        $ make

    3)检查可加载的库文件(*.a) 在编译之后是否被创建。
        查看是否产生了一个"libtcldbg.a" 文件。他是一个tcl的库文件。
         
    4) 复制这个库文件到NS-2 库目录里面,即 /home/UserID/ns-allinone-2.28/ns-2.28/lib or ~ns/lib
        $ cp *.a ../ns-2.28/lib
     注:编译之后不会产生一个可执行的文件,而是一个可加载的库文件。
3. 编译NS-2
   1) 进入~ns/lib目录里面,查看库文件libtcldbg.a是否存在。
          $ cd ../ns-2.28/lib
          $ ls
   2) 进入ns-2.28目录下面,即 /home/UserID/ns-allinone-2.28/ns-2.28
        cd ..

    3) 重新配置NS-2以便启用tcl-debug.
        $ ./configure --with-tcldebug
   注意:你可以从屏幕输出的信息查看到tcl-debug是否被验证了。
           如果你没有看到以下的文字,你需要重复以前的步骤。
         Checking for libtcldbg... -L/home/UserID/ns-allinone-2.28/ns-2.28/ ../tcl-debug-2.0 -ltcldbg
            上面的文字在下面这句话之后出现     
              checking dmallc... not requested with --with-dmalloc 
   4)删除以前的编译纪录
           $ make clean
        注:这一步骤非常重要!
   5)重新编译NS-2
          $ make    
         现在tcl-debug已经嵌入到NS-2的可执行文件"ns.exe"中去了
   6)检查NS-2是否能够正常运行。随便选择一个脚本测试一下就可以了
         $ ns example.tcl
   7) 拷贝ns.exe到ns-allinone-2.28/bin 目录里面(我觉得设置了环境变量就不用了)
4. 检查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>

如果还有错误信息,你就重复检查以上各个过程是否正确,好运!

转自http://blog.csdn.net/flyuniverse_shell/article/details/5956618

1.下载 tcl-debug-2.0;将下载的tar包拷贝到与NS-2.34平行的目录下,并解压
2. 编译tcl-debug,并且将产生的可加载的库文件复制到NS-2.34的库目录里面,具体步骤如下:
   1) 进入到tcl-debug目录下面
            $ cd tcl-debug-2.0
   2)  配置并且编译tcl-debug
        $ ./configure --prefix =/home/pengyu/ns-allinone-2.34/ns-2.34/ --with-tcl=/home/pengyu/ns-allinone-2.34/tcl8.4.18/unix/
        $ make
   3)检查可加载的库文件(*.a) 在编译之后是否被创建。
        查看是否产生了一个"libtcldbg.a" 文件。他是一个tcl的库文件。
  4) 复制这个库文件到NS-2 库目录里面,即 /home/pengyu/ns-allinone-2.34/ns-2.34/lib下面
3. 编译NS-2
  1) 进入ns-2.34目录下面,即 /home/pengyu/ns-allinone-2.34/ns-2.34
  2) 重新配置NS-2以便启用tcl-debug.
      $ ./configure --with-tcldebug=/home/pengyu/ns-allinone-2.34/tcl-debug-2.0
   注意:你可以从屏幕输出的信息查看到tcl-debug是否被验证了。
       如果你没有看到以下的文字,你需要重复以前的步骤。
    Checking for libtcldbg... -L/home/pengyu/ns-allinone-2.34/tcl-debug-2.0 -ltcldbg
       上面的文字在下面这句话之后出现     
     checking dmallc... not requested with --with-dmalloc 
  3)删除以前的编译纪录
           $ make clean
        注:这一步骤非常重要!
  4)重新编译NS-2
          $ make   
         现在tcl-debug已经嵌入到NS-2的可执行文件"ns.exe"中去了
  5)检查NS-2是否能够正常运行。随便选择一个脚本测试一下就可以了
         $ ns  example.tcl
4. 检查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 //查询一个类的超类/子类

gdb调试C++

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值