Это решается путем записи в трассу текущего указателя команд x86 и нахождению строки по отладочной информации.
Сомневаюсь, что это надёжно - особенно с учётом оптимизаций типа инлайнинга вызовов и переупорядочивания кода между проинлайненным и местным.
Come on! Если ты добавляешь в генерированный код директивы препроцессора для указания номера строк, как это делается сейчас, то оптимизации с не меньшим удовольствием снесут эти номера строк.
В случае номером операторов конструкция "файл:строка" в виде СИ-шной строки вставлялась в генерируемый код.
Ровно как и сомневаюсь в целесообразности связываться со столь громоздкой вещью, как отладочная информация, для столь простой цели.
Открываешь трубу к gdb, и посылаешь одну команду. Все это делается за пол-дня.
... и тем самым создаёшь конструкцию, сложность которой совершенно не соответствует задаче. Особенно с учётом ... хмм ... того, что скорость работы gdb (да пожалуй и его стабильность) оставляет желать лучшего.
А дело не в том, что студент плох (тем более что на момент, когда Костя этим занимался, ещё не было известно, каков студент), а в том, что одну и ту же [нетривиальную] задачу начинают решать два человека, сидящие в соседних комнатах, без попыток синхронизации. Сипмтоматично. Хотя и оффтопик для данной рассылки.
Ну, можно в эту рассылку писать о всех непривиальных задачах, которые кто-то начинает решать.
Ну с точки зрения продуктивности работы это было бы наверное неплохо. Хотя сомневаюсь, что получится реально заставить себя это писать, читать и комментировать.
С другой стороны, в данном конкретном случае информация была - в виде постановки задачи на форуме...