Возможно ли это, и если да, то как бы вы сделали вывод ошибок, включающий последние пару строк кода? Я знаю о поддержке GNU g ++ для __LINE__
а также __FUNC__
но они дают только номер строки в виде целого числа и имя функции в виде строки — я хотел бы вывести функцию, код которой не удался, или хотя бы последние несколько команд, выполненных программой.
Я подумал, может быть, написать сценарий m4, который будет анализировать основную часть кода и вставлять строковые структуры функций, в которые они помещены (исключая себя, конечно).
Любые другие / лучшие идеи?
Не меняйте свой код вообще. использование __LINE__
а также __FUNC__
и постобработка вывода ошибок. То есть, запустите вашу программу как my-prog > $(tty) 2>&1 | post-process
где post-process
имеет доступ к вашей кодовой базе и может генерировать нужный текст. Возможно, вы захотите немного изменить код, добавив теги, чтобы облегчить постобработке поиск имени функции и номера строки.
Других решений пока нет …