В настоящее время я писал логику логирования и хотел сделать отступ. Самый простой способ понять, присутствовал ли какой-либо вызов функции или какая-то функция завершилась, - посмотреть на текущий адрес стека / кадра. Давайте предположим, что стек растет вверх ногами, тогда, если адрес стека в вызове log()
меньше, чем во время предыдущего вызова, мы можем увеличить отступ, так как присутствовал некоторый вызов функции. Я знаю, что есть такие функции, как backtrace()
, которые знают, как ее вывести, или вы можете использовать некоторую сборку, однако я помню чтение внешних переменных, которые можно использовать для получения этой информации. Может ли кто-то назвать эти переменные или дать ссылку, где я могу их найти (насколько я помню, это было в некоторых книгах по компьютерным системам, таких как «Компьютерные системы: Перспектива программиста»). В противном случае, какой самый удобный / быстрый способ получения этой информации?