Search code examples
c++gdbtclbreakpointsns2

GDB and NS2: how to stop program at some Function call


I am using gdb to debug NS-2 which is a simulator for network protocols. It takes an .tcl file as input and interpret it. [I think it is an interpreter.]

Some of the code is written in tcl (events and creation of network components) and some in C++ (especially Packet Formats, Agents etc.).

I have created an Agent in C++ and i want to stop it at some function call so that i can see the stack trace and find which other classes have been called before it.

This is what i have done:

There was some error in one of my MyAgent::function and it was giving Segmentation Fault and gdb was stopping there automatically. I could then see the stack trace. I rectified the error.

Now when i run

   gdb ./ns
   b MyAgent::function()
   /*
   When i press TAB after writing "b MyA" it gives me all functions 
   of my class :). when i press enter after above command -- 
   it asks me "Breakpoint on future shared library load" and i say Yes. 
   I hope this is ok ??
   */
   r myfiles/myWireless.tcl

Now it runs and do not stop anywhere. :(

I am sure that this function is being called, because when that Segmentation fault was occuring, it was stopping at that function.

Thanks


Solution

  • You can add a breakpoint in that function:

    (gdb) break MyAgent::function()

    You must make sure to compile with whatever options are necessary to get debug symbols. On GCC, use the -g or -ggdb options.