В настоящее время я использую __PRETTY_FUNCTION__
при сообщении сообщений (ошибок, предупреждений и т. Д.) В файл журнала. Это обеспечивает отсутствие путаницы в отношении того, какая функция создала сообщение об ошибке.
В данный момент я хотел бы автоматически взять вывод из файла журнала и связать его обратно с кодом, который изначально его создал. Проблема в том, что я не могу определить эффективный метод для сопоставления вывода __PRETTY_FUNCTION__
в лог-файле с именем функции в коде.
Изначально я надеялся, что смогу просто использовать gcc -E
, чтобы развернуть все макро константы / компоненты препроцессора и напрямую сравнить вывод файла журнала с исходным кодом. Тем не менее, __PRETTY_FUNCTION__
не является макроконстанцией - это, очевидно, переменная, которая определяется во время выполнения. Поэтому gcc -E
не работает.
С http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html:
Эти идентификаторы не являются макросами препроцессора. В GCC 3.3 и ранее,
только в C __FUNCTION__
и __PRETTY_FUNCTION__
были обработаны как строка
литералы; они могут быть использованы для инициализации массивов символов, и они могут
быть объединенным с другими строковыми литералами. GCC 3.4 и позже лечить
их как переменные, как __func__
. В C ++ __FUNCTION__
и
__PRETTY_FUNCTION__
всегда были переменными.
Любые идеи относительно того, как я могу эффективно сопоставить вывод из __PRETTY_FUNCTION__
с функциями в исходном коде?