【发布时间】:2017-05-09 21:13:20
【问题描述】:
为了提供背景,我想以一种简洁的方式基于调用堆栈直观地打印日志消息。
例如。
应该给出输出为
foo(){
printf("Foo was called");
bar();
}
bar(){
printf("bar was called");
jai();
}
jai(){
printf("Jai was called");
}
<<< OUTPUT >>>
Foo was called.
bar was called
jai was called.
我不想将空格数作为参数传递给这些函数或保持相同的全局计数。
我在想,如果我们可以得到函数在调用堆栈中的位置,那么我们可以在文本之前填充相同数量的空格以获得所需的输出格式。
我看到 backtrace 函数调用也提供了返回的整个堆栈名称。它还返回调用中的函数总数。
有没有只返回位置的函数?
【问题讨论】:
-
"如果我们能得到函数在调用栈中的位置":那要么是很多指令要执行,要么是参数,要么是全局变量。
标签: c linux-kernel system-calls glibc backtrace