Skip to main content

How to debug NS2 using gdb



1) Extract  NS2 tar file.
2) Modify Makefile.in from ns-allinone2.34/ns2.34/
           
1. change CCOPT = @V_CCOPT@ to CCOPT = @V_CCOPT@ -g 
2. add -DNDEBUG -DDEBUG to the end of DEFINE = -DTCP_DELAY_BIND_ALL -DNO_TK @V_DEFINE@ @V_DEFINES@ @DEFS at -DNS_DIFFUSION -DSMAC_NO_SYNC -DCPP_NAMESPACE=@CPP_NAMESPACE at -DUSE_SINGLE_ADDRESS_SPACE -Drng_test 

that is: 

DEFINE = -DTCP_DELAY_BIND_ALL -DNO_TK @V_DEFINE@ @V_DEFINES@ @DEFS at -DNS_DIFFUSION -DSMAC_NO_SYNC -DCPP_NAMESPACE=@CPP_NAMESPACE at -DUSE_SINGLE_ADDRESS_SPACE -Drng_test -DNDEBUG -DDEBUG 

now browse to .../ns-allinone/ns2.3x and run ./configure and after that "make clean" and then "make"

2) Open terminal and type in "gdb ns"
3)then " run tcl_file_name"

If there are errors gdb will stop at respective location.

Comments

  1. hi,
    i've tried your solution, well this now gives me error when i type make, in some other file that i am not even intended to use like (shadowing.cc, aodv.cc, aomdv..) well this questioned the embedded protocols that comes with the allinone-2.34 which until now was compiling fine. have i missed something? i only need to debug my protocols the ones inherent to ns2 are working fine.

    ReplyDelete
  2. hi,
    How to simulate ddos attack in ns2?

    ReplyDelete
  3. Play Baccarat, poker, casino, and baccarat in Vegas
    Casino Baccarat is a thrilling game 바카라 사이트 for players from all over the 인카지노 world. Players can play online, in demo mode, for 샌즈카지노 free at William Hill or at the

    ReplyDelete

Post a Comment

Popular posts from this blog

Runtime packet loss calculation in NS2

Hello friend, here I am going to present a method to calculate the runtime packet loss. I am going to show this using ns2 2.34 and AODV.       Sometime we require packet loss to calculate trust value (in case of Trust Based protocols where it is done by no. of packets sent - no. of packets received).        I am going to show the calculation for a particular pair of nodes. Steps involved:- A) We will have to add a node as a malicious node which will drop the packets      intentionally. You can add a malicious node using this link. B) Second, we'll set the AODV in promiscuous mode, where every node will      listen to its neighbors. 1) We need to modify in total 3 files to set AODV in promiscuous mode, so it's     good to take a backup of it.     Files are: ns-allinone-2.34/ns-2.34/aodv/aodv.cc ns-allinone-2.34/ns-2.34/aodv/aodv.h ns-allinone-2.34/ns-2.34/tcl/lib/ns-mobilenode.tcl 2) Open the file ns-allinone-2.34/ns-2.34/aodv/aodv.h in your favorite edito

How to use promiscuous mode in AODV NS2

Introduction:-           In Promiscuous mode each node in the network listens the packets transmitted by its own neighbor nodes.            In NS-2, some time we have to calculate the packet drops or analyze the process. For the same we need to set the network to operate in promiscuous mode. Here, I am going to explain how we can set our wireless network in promiscuous mode with AODV as Routing protocol using NS2 simulator. 1) We need to modify in total 3 files, so it's good to take a backup of it.     Files are: ns-allinone-2.34/ns-2.34/aodv/aodv.cc ns-allinone-2.34/ns-2.34/aodv/aodv.h ns-allinone-2.34/ns-2.34/tcl/lib/ns-mobilenode.tcl 2) Open the file ns-allinone-2.34/ns-2.34/aodv/aodv.h in your favorite editor     and make the changes as shown in blue color.   #include <mac.h>   class AODV: public Tap, public Agent {   public:   void tap(const Packet *p);   ......   protected:   Mac *mac_;   ......  }

How to add trust table in NS2.

I am assuming AODV protocol. In rtable.cc add below code trust_entry::trust_entry() {    //Initialize as per your need. } trust_entry::~trust_entry() {   //Deconstruct as per your need. } trust_entry* trust_store::trust_lookup( nsaddr_t node_id) {      trust_entry *rp = trusthead.lh_first;      for (; rp; rp = rp->trust_link.le_next) {              if (rp->node_id == node_id)                  break;      }     return rp; } void trust_store::trust_delete( nsaddr_t node_id) {     trust_entry *rp = trust_lookup(node_id);     if (rp)     {         LIST_REMOVE(rp, trust_link);         delete rp;     } } trust_entry* trust_store::trust_insert( nsaddr_t node_id, nsaddr_t prev_node,nsaddr_t next_node,int32_t trust_value) {     trust_entry *rp;     //assert(tr_lookup(dst_seq_no) == 0);     rp = new trust_entry;     assert(rp);     rp->node_id = node_id;     rp->prev_node = prev_node;     rp->next_node = next_node;     rp->trust_value = trust_value;     LIS