List of all function calls made in an application

前端 未结 4 1997
甜味超标
甜味超标 2020-12-04 14:37

How can we list all the functions being called in an application. I tried using GDB but its backtrace list only upto the main function call.

I need deeper list i.e

4条回答
  •  情话喂你
    2020-12-04 15:27

    record function-call-history

    https://sourceware.org/gdb/onlinedocs/gdb/Process-Record-and-Replay.html

    This should be a great hardware accelerated possibility if you are one of the few people (2015) with a CPU that supports Intel Processor Tracing (Intel PT, intel_pt in /proc/cpuinfo).

    GDB docs claim that it can produce output like:

    (gdb) list 1, 10
    1   void foo (void)
    2   {
    3   }
    4
    5   void bar (void)
    6   {
    7     ...
    8     foo ();
    9     ...
    10  }
    (gdb) record function-call-history /ilc
    1  bar     inst 1,4     at foo.c:6,8
    2    foo   inst 5,10    at foo.c:2,3
    3  bar     inst 11,13   at foo.c:9,10
    

    Before using it you need to run:

    start
    record btrace
    

    which is where a non capable CPU fails with:

     Target does not support branch tracing.
    

    CPU support is further discussed at: How to run record instruction-history and function-call-history in GDB?

    Related threads:

    • how to trace function call in C?
    • Is there a compiler feature to inject custom function entry and exit code?

    For embedded, you also consider JTAG and supporting hardware like ARM's DSTREAM, but x86 support does not seem very good: debugging x86 kernel using a hardware debugger

提交回复
热议问题