2

我已将 JCL 安装到 Delphi 2010 中。在以下代码中

try
  raise Exception.Create('Error Message');
except
  on E: Exception do
  begin
    ResultStatus := JclLastExceptStackListToStrings(sl, True, True, True, True);
  end;
end;

我在初始化部分也有这个调用:

initialization
  JclStartExceptionTracking;

ResultStatus 为 false 且 sl 为空。我已经设置了生成地图和 .jdbg 文件的选项。其他功能,如 ProcByLevel 工作正常。我还需要做些什么来使 JclLastExceptStackListToStrings 工作吗?

从 JclDebug.pas 文件:

最后修改: $Date:: 2010-09-07 19:43:19 +0200(2010 年 9 月 7 日 3 月) 修订: $Rev:: 3331

4

4 回答 4

1

试着打电话

JclStartExceptionTracking;

在您的应用程序的一开始。

[编辑]你已经是了。然后我目前没有建议。[/编辑]

于 2011-01-16T12:46:45.257 回答
0

我已经被这个问题困扰了几天。JCL 堆栈跟踪正在与我的程序一起工作,我能够查明错误位置。不知何故,它刚刚停止工作。

然后我使用 JCL 的演示,看看它是否可以正常工作。它工作得很好。我将所有项目选项设置为与演示相同,但​​我的程序在演示每次工作时都没有转储堆栈。

突然间,我注意到我的程序和演示程序之间的唯一区别是 CPU 架构。演示是 32 位的,我的程序是 64 位的。

我将 JCL 演示编译为 64 位,它也停止工作。它仅适用于 32 位代码。不是 64 位。

不幸的是,我的程序需要 6-7 GB 的内存,而我不能使用 32 位模式。我建议使用 Eurekalog,因为它适用于两种架构。

于 2015-02-03T12:43:41.440 回答
0

我用:

JclStackTrackingOptions := [stStack, stExceptFrame, stRawMode, stAllModules, stStaticModuleList];

于 2011-01-18T01:22:30.333 回答
0

我在 Delphi XE 1 中解决了这个问题。

  1. 打开项目选项菜单
  2. 打开Delphi 编译器树节点
  3. 选择链接树节点
  4. 启用调试信息复选框
于 2013-11-22T14:31:29.143 回答