У меня есть консольное приложение, написанное на Free Pascal, которое, как и большинство более крупных приложений, иногда дает сбой. Поскольку это приложение работает, я обычно прошу людей записать мне трассировку стека при сбое — я распространяю его как с отладочной информацией, так и с линейной информацией. Однако приложение использует вывод FPC video.pas, и иногда трассировка стека текстового вывода не видна.
Есть ли способ перехватить текст, записанный в необработанных исключениях, С помощью трассировки стека, чтобы я мог записать его в файл? Я не могу просто передать стандартную ошибку в файл, потому что видео FPC почему-то не работает с этим, а также я бы хотел, чтобы люди просто запускали исполняемый файл, а не пакетный файл или файл оболочки.
В качестве примера я хотел бы поймать это в файл или другой источник вывода:
ERangeError : Range check error∙
$0048C0EA TCELLS__GETCELL, line 104 of dfmap.pas
$004AD133 TDOOMGENERATOR__GENERATECITYDUNGEON, line 397 of dfdungen.pas
$004AF87D TDOOMGENERATOR__GENERATE, line 760 of dfdungen.pas
$0041293B TDOOM__RUN, line 354 of doombase.pas
$00401CD6 main, line 51 of doomrl.pas
Есть ли возможность сделать это чисто?