Показать объект номера строки уничтожен

Я реализую механизм трассировки, который выводит строку журнала при входе в функцию и при выходе (когда объект трассировки уничтожается). Мне было бы интересно также вывести номер строки, из которой выходит область, но я не уверен, как это сделать, поскольку объект уничтожается при выходе. Очевидно, что __LINE__ в деструкторе не будет работать, так как он просто выведет номер строки деструктора.


person stgtscc    schedule 30.05.2013    source источник
comment
Область действия заканчивается закрывающей фигурной скобкой функции (если только вы не говорите о временных объектах, которые действуют в течение некоторого выражения). Вам действительно нужно регистрировать это?   -  person jrok    schedule 30.05.2013
comment
@jrok Полагаю, я хотел сказать, чтобы напечатать номер строки, которая вызвала выход из области видимости, например, с помощью оператора return.   -  person stgtscc    schedule 30.05.2013
comment
Я понимаю. Может это: #define LOG_RETURN(x) return (std::clog << __LINE__), (x); :)   -  person jrok    schedule 30.05.2013


Ответы (1)


Решением было бы сбросить трассировку стека, как это делается, зависит от платформы/компилятора. Для Visual Studio вы можете использовать библиотеку DbgHelp, хотя полный код для печати трассировка стека довольно длинная.

person riv    schedule 30.05.2013