JclLastExceptStackListToStrings生成一个空字符串列表

时间:2011-01-16 12:12:16

标签: delphi jedi-code-library

我已将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为空。我已设置生成map和.jdbg文件的选项。其他功能,如ProcByLevel工作正常。我还需要做些什么来使JclLastExceptStackListToStrings工作吗?

来自JclDebug.pas文件:

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

4 个答案:

答案 0 :(得分:1)

尝试拨打

JclStartExceptionTracking;

在您申请的最开始。

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

答案 1 :(得分:0)

我用:

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

答案 2 :(得分:0)

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

  1. 打开项目选项菜单
  2. 打开 Delphi编译器树节点
  3. 选择关联树节点
  4. 启用调试信息复选框

答案 3 :(得分:0)

我已经坚持这个问题几天了。 JCL堆栈跟踪正在使用我的程序,我能够查明错误位置。不知怎的,它只是停止了工作。

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

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

我将JCL演示编译为64位,它也停止了工作。它只能使用32位代码。不是64位。

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