2013-05-30 2 views
1

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

+1

Область действия заканчивается в закрывающей фигурной скобке функции (если вы не говорите о временных состояниях, которые сохраняются на протяжении некоторого выражения). Вам действительно нужно регистрировать это? – jrok

+0

@jrok Я предполагаю, что я хотел сказать, чтобы напечатать номер строки, который * вызвал * область действия для выхода, например, с помощью оператора return. – stgtscc

+0

Я вижу. Может быть, это: '#define LOG_RETURN (x) return (std :: clog << __LINE__), (x);' :) – jrok

ответ

0

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

Смежные вопросы