Integrated debug library for a C program

Discussion in 'C Programming' started by llothar, May 30, 2007.

  1. llothar

    llothar Guest

    Hello, i'm using Eiffel at the moment for my program.

    One of the killer features is a very simple traceback that gives me
    after an assert failure the whole stracktrace together with a readable
    dump of all local variables and function parameters (normally much
    less then 50kb compressed). This can be added to the generated
    executable file and so it can run on the clients computer.

    Is there any c compiler or library that allows me to do this?
    llothar, May 30, 2007
    #1
    1. Advertising

  2. In article <>,
    llothar <> wrote:
    >Hello, i'm using Eiffel at the moment for my program.


    >One of the killer features is a very simple traceback that gives me
    >after an assert failure the whole stracktrace together with a readable
    >dump of all local variables and function parameters (normally much
    >less then 50kb compressed). This can be added to the generated
    >executable file and so it can run on the clients computer.


    >Is there any c compiler or library that allows me to do this?


    Unfortunately, the C language itself does not have any provisions
    for this.

    I gather (perhaps incorrectly) that gcc provides extra
    calls to get stack traces; as I have not looked into that, I
    do not know whether those facilities are available for all gcc
    execution targets or only for some of them or only for "hosted"
    targets (e.g., it would not surprise me if the facility were not
    available when the target was an embedded system.)

    There are other compilers that provide these kind of facilities,
    and there are operating systems that provide operating system
    calls for similar purpose.

    If you were to indicate the target OS(s), we might be able to
    redirect you to specific compilers or to newsgroups more likely
    to know for those OS(s).
    --
    "No one has the right to destroy another person's belief by
    demanding empirical evidence." -- Ann Landers
    Walter Roberson, May 30, 2007
    #2
    1. Advertising

  3. llothar

    Eric Sosman Guest

    llothar wrote On 05/30/07 12:23,:
    > Hello, i'm using Eiffel at the moment for my program.
    >
    > One of the killer features is a very simple traceback that gives me
    > after an assert failure the whole stracktrace together with a readable
    > dump of all local variables and function parameters (normally much
    > less then 50kb compressed). This can be added to the generated
    > executable file and so it can run on the clients computer.
    >
    > Is there any c compiler or library that allows me to do this?


    Most C environments include tools to do this sort
    of thing. The capabilities, modes of operation, and so
    on are specific to the environment and not part of C,
    just as the editor you use to prepare C source is not
    part of C. You'll need to look at what the plaforms
    you care about offer: gdb, pstack, dbx, ...

    The amount of information such tools are able to
    extract is often influenced by the option flags used to
    compile and link the program: There are often specific
    "debugging" flags that cause the program to retain a
    lot of self-descriptive information that would otherwise
    have been discarded, things like information about the
    names and types of variables. Usually one can get (at
    best) uninterpreted or only semi-interpreted hex dumps
    of memory-resident data if debugging flags aren't used.

    A further complication is C's tradition of aggressive
    optimization. Even with debugging information present
    the behavior of a program can seem perverse. For example,
    after an `assert (x >= 0)' failure the post-mortem output
    might indicate that the value of x is 42 -- so, why did
    the assertion fail? It might be that the memory slot
    devoted to x is not up-to-date with a transient x being
    held in a register; the generated code would have stored
    the new (negative) value into x's memory eventually, but
    the assert fired first ...

    Summary: Traceback facilities (debugging facilities in
    general) are system-specific and subject to variation,
    compiler and linker options can often improve the quality
    of the information they produce, and the information must
    be viewed with a dash of caution.

    --
    Eric Sosman, May 30, 2007
    #3
  4. llothar

    jacob navia Guest

    llothar wrote:
    > Hello, i'm using Eiffel at the moment for my program.
    >
    > One of the killer features is a very simple traceback that gives me
    > after an assert failure the whole stracktrace together with a readable
    > dump of all local variables and function parameters (normally much
    > less then 50kb compressed). This can be added to the generated
    > executable file and so it can run on the clients computer.
    >
    > Is there any c compiler or library that allows me to do this?
    >


    Yes. Q software solutions sells such a library, and I did
    some years ago a customized debugger for SmallEiffel, that
    now is called SmartEiffel.

    contact me for further information.

    jacob
    jacob navia, May 30, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. RonL
    Replies:
    0
    Views:
    735
  2. llothar

    Integrated debug library for a C program

    llothar, May 30, 2007, in forum: C Programming
    Replies:
    0
    Views:
    266
    llothar
    May 30, 2007
  3. llothar

    Integrated debug library for a C program

    llothar, May 30, 2007, in forum: C Programming
    Replies:
    4
    Views:
    307
    Steve Thompson
    May 31, 2007
  4. Replies:
    11
    Views:
    1,076
  5. Iñaki Baz Castillo
    Replies:
    0
    Views:
    87
    Iñaki Baz Castillo
    Feb 20, 2011
Loading...

Share This Page