Skip to content

goblinhack/c-plus-plus-callstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ program tracing tool

Uses a constructor to maintain a callstack that can be dumped at any time.

This is a portable approach that does not rely on backtrace() and c++ demangling which is very unportable.

The only change you need is to include callstack.h and add an underscore at the beginning of a function (a bit of sedding can do this - reach out to me if you cannot do this).

        void my_function (void)
        {_                     // <<---- yes, add "_" to trace this function
          // rest of code
        }

you can even trace inside functions

        void my_function (void)
        {_
          // rest of code
         _
          // more code
         _
        }

Call the following anytime to dump the current stack:

    CALLSTACK_DUMP();

To build:

    make
    ./callstack 

Example output:

    Stack dump:
    (stack) 1 main.cpp void foo3(int, int), line 7
    (stack) 2 main.cpp void foo2(int), line 12
    (stack) 3 main.cpp void foo1(), line 17
    (stack) 4 main.cpp int main(int32_t, char **), line 22

NOTE: It should be thread safe as thread local storage is maintained for the callstack.

About

C++ program tracing tool

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published