Чтобы предоставить фон, я хочу визуально распечатать сообщения журнала на основе стека вызовов аккуратным способом.Как получить положение функции в стеке вызовов?
Например.
Если дать выход в
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 обеспечивает то же самое, что и полное имя стека. Он также возвращает общее количество функций в вызове.
Есть ли какие-либо функции, которые возвращают только позицию?
«Если мы можем получить позицию функции в стеке вызовов»: это либо много команд для выполнения, либо параметр, либо глобальная переменная. –