Мой код регистрации использует возвращаемое значение backtrace(), чтобы определить текущую глубину стека (для довольно печатных целей), но я вижу, что профилирование это довольно дорогостоящий вызов.Есть ли более дешевый способ найти глубину стека вызовов, чем использование backtrace()?
Я не думаю, что есть более дешевый способ сделать это? Обратите внимание, что мне не нужны адреса фреймов, сколько их есть.
Редактировать: Эти функции ведения журнала используются на всей базе данных, поэтому ручное отслеживание глубины стека не является вариантом.
Если идея добавить еще один параметр к вашей функции пугает вас, вы можете также использовать статическую переменную. По-моему, это не очень хорошая идея. Это будет работать так же, как решение Дугласа. – Brian