delphi - 在 Delphi XE 中使用 JCL 没有堆栈跟踪

标签 delphi exception stack-trace jedi-code-library

我们有一个项目,已从 Delphi 2007 转换为 Delphi XE。在 2007 版本中,我们使用 JCL 的调试功能在出现异常时进行堆栈跟踪。事实上,我们使用了 JCL 的标准 ExceptionDlg 向导,它依赖于以下行来获取堆栈跟踪:

StackList := JclLastExceptStackList;

这个东西曾经在 Delphi 2007 中工作,但在 XE 中不再工作(它抛出一个'空白'堆栈)。

如果我们用经典替换那个东西

   StackList := JclCreateStackList(false,0,Caller(0,false));
   lTemp := TStringList.Create;
   StackList.AddToStrings(lTemp,true,true,true,true);
   ShowMessage(lTemp.Text);
   lTemp.Free;
   Stacklist.Free;

...它可以工作(因此我们对 map 等有正确的设置),但是(不幸的是)它显示了当前堆栈跟踪(当然,这会导致异常对话框)并且最后异常的堆栈跟踪。

有什么想法可以解决这个问题吗?

TIA

最佳答案

您调用了JclStartExceptionTracking吗?

看来这个方法首先负责连接异常并添加通知程序。

function JclStartExceptionTracking: Boolean;
begin
  if TrackingActive then
    Result := False
  else
  begin
    Result := JclHookExceptions and JclAddExceptNotifier(DoExceptNotify, npFirstChain);
    TrackingActive := Result;
  end;
end;

关于delphi - 在 Delphi XE 中使用 JCL 没有堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385768/

相关文章:

python - 在运行时识别 python 脚本行中的函数调用

delphi - TMemo/TRichEdit有更多内存

Java Arrays.fill() 负数

ios - 在 iOS 设备上部署文件 delphi xe

c# - MySQL try-catch 无法正常工作

javascript 错误和异常处理程序

ios - 无法理解崩溃的堆栈跟踪

java - 如何在所有操作系统上运行 .jar 文件并将输出保存到文件中?

delphi - 如果 Delphi TSpeedButton 是组中唯一的一个,如何使其保持按下状态

delphi - SQLite 和 DISQLite 如何比较大型简单数据库?