我有一个用Free Pascal编写的控制台应用程序,就像大多数大型应用程序有时会崩溃一样。由于这个应用程序是实时的,我通常会要求人们在崩溃时写下我的堆栈跟踪 - 我用debug和lineinfo分发它。但是,应用程序使用FPC video.pas输出,有时文本输出堆栈跟踪不可见。
有没有办法拦截写入堆栈跟踪的未处理异常的文本,所以我可以将其写入文件?我不能只将标准错误传递给文件,因为FPC视频不能用于此,我也希望人们只运行可执行文件而不是批处理文件或shell文件。
作为一个例子,我想将其捕获到文件或其他输出源:
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
是否可以干净利落地做到这一点?
答案 0 :(得分:2)
涉及两个(系统单元)程序变量:
当前处理iirc是分层的
简而言之:
请注意,当您执行-gl
时,会明确包含lineinfo单元