ddd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How to skip system functions while stepping through the code?


From: Geert Vancompernolle
Subject: How to skip system functions while stepping through the code?
Date: Sat, 03 Mar 2007 08:52:17 +0100
User-agent: Thunderbird 1.5.0.10 (Windows/20070221)

Hi,

I have a small C++ program that I want to debug with DDD.

This is the body of the module "main.cpp":

#include "stdio.h"
#include "i2cexample.hpp"

int main( void )
{
    printf( "\n\n" );
    printf( "*******************************************************\n" );
    printf( "* Home Automation System - HAS (c) 2008, GeVaDomotics *\n" );
    printf( "*******************************************************\n" );
    printf( "\n\n" );

    CI2cExample* tryout = new CI2cExample();
   
    (void)tryout->RunExample();
   
    delete tryout;
    tryout = 0;
   
    return( 0 );
}

As one can see, there's a call to a C++ constructor CI2cExample().

Now, when stepping through this small application with the "Step" function of DDD, then I can smoothly step over the "printf()" statements.  However, my intention is to step into the constructor of CI2cExample(), but when pressing "Step" at that time, the debugger wants to do into files of which I don't have the source code.

Below is the sequence which is followed by DDD, the moment I reach the line where the "new CI2cExample()" call is located and when I press the "Step" button:


Breakpoint 13, main () at main.cpp:12
(gdb) step
operator new (sz=1) at /home/cii/DIST/tools/cris-dist/gnu-toplev/libstdc++-v3/libsupc++/new_op.cc:46
    in /home/cii/DIST/tools/cris-dist/gnu-toplev/libstdc++-v3/libsupc++/new_op.cc
(gdb) step
48    in /home/cii/DIST/tools/cris-dist/gnu-toplev/libstdc++-v3/libsupc++/new_op.cc
(gdb) step
__libc_malloc (bytes=0) at malloc.c:2697
    in malloc.c
Current language:  auto; currently c
(gdb) step
2709    in malloc.c
(gdb) step
2711    in malloc.c
(gdb) step
2712    in malloc.c
(gdb) step
2714    in malloc.c
(gdb) step
chunk_alloc (ar_ptr=0xfd100, nb=524480) at malloc.c:2763
(gdb) step
2765    in malloc.c
(gdb) step
2769    in malloc.c
(gdb) step
2770    in malloc.c
(gdb) step
2773    in malloc.c
(gdb) step
2775    in malloc.c
(gdb) step
2776    in malloc.c
(gdb) step
2778    in malloc.c
(gdb) step
2787    in malloc.c
(gdb) step
2821    in malloc.c
(gdb) step
2947    in malloc.c
(gdb) step
2976    in malloc.c
(gdb) step
2977    in malloc.c
(gdb) step
2978    in malloc.c
(gdb) step
2979    in malloc.c
(gdb) step
2983    in malloc.c
(gdb) step
__libc_malloc (bytes=1123064) at malloc.c:2715
(gdb) step
2735    in malloc.c
(gdb) step
2736    in malloc.c
(gdb) step
2737    in malloc.c
(gdb) step
operator new (sz=12) at /home/cii/DIST/tools/cris-dist/gnu-toplev/libstdc++-v3/libsupc++/new_op.cc:49
    in /home/cii/DIST/tools/cris-dist/gnu-toplev/libstdc++-v3/libsupc++/new_op.cc
Current language:  auto; currently c++
(gdb) step
63    in /home/cii/DIST/tools/cris-dist/gnu-toplev/libstdc++-v3/libsupc++/new_op.cc
(gdb) step
CI2cExample (this=0x1122f0) at i2cexample.cpp:25

Here, the debugger finally gets into the constructor of the CI2cExample() class.  In that constructor, there are again calls to the constructor of another class.  This is the code:

CI2cExample::CI2cExample( void )
{
    pcf8574 = new CI2cHal( 0x40 );
    pcf8591 = new CI2cHal( 0x90 );
    nvm     = new CI2cHal( 0xA0 );
}


Also here, the whole history repeats: when I press the "Step" button to go into the constructor of CI2cHal, there are again lots of attempts to open the source files of functions of which I don't have the source file.


Question:

Is there a setting I can do to avoid DDD trying to go into functions of which I don't have the source code?  Using "Next" in stead of "Step" is not an option, since this skips one line at a time and never goes into code of which I do have the sources.

Any help much appreciated.

Best rgds,

--Geert


reply via email to

[Prev in Thread] Current Thread [Next in Thread]