c - 如何跟踪所有本地函数调用和退出,并将其记录到文件中以供查看

标签 c linux debugging call trace

我想在Linux下跟踪一个C程序,把所有的函数调用和返回以树的形式记录下来。 例如源码:

void a ()
{
    printf("a\n");
}
void b ()
{
    printf("b\n");
}

void c ()
{
    a();
    b();
}

int main()
{
    a();
    b();
    c();
}

我想要如下输出:

call main
    call a
    exit a
    call b
    exit b
    call c
        call a
        exit a
        call b
        exit b
    exit c
exit main

这是一个理想主义的输出。我只想获取本地函数调用和返回的所有过程,所以也欢迎类似的输出。

最佳答案

gcc -finstrument-functions 完成我的工作

关于c - 如何跟踪所有本地函数调用和退出,并将其记录到文件中以供查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655948/

相关文章:

javascript - Safari 6 中的 javascript 调试器是否具有去缩小 javascript 的能力?

c - 执行 printf() 和 Segmentation Fault

c - 当 float 是函数的实际参数时,为什么我的计算机会任意更改 float 末尾的小数位?

c - 关于while循环上的表达式

c - 在 C 中实现详细

linux - 更改默认端口后 Apache2 不工作

java - 使用网络摄像头进行光线/颜色跟踪

c - 应用程序失去焦点时的 X11 事件

调试 go 应用程序不会在断点处停止

linux - 为什么 `pop` 指令不从堆栈中弹出?