【问题标题】:GetStackTrace in Delphi 7?Delphi 7中的GetStackTrace?
【发布时间】:2009-11-16 05:33:16
【问题描述】:

使用 Delphi 7,如何从 Exception 获取表示堆栈跟踪的字符串?

try
  SomethingDodgy();
except
  on E:Exception do begin
    // print stack trace
    Log.Write(/* ??? */);
  end;
end;

我听说最新的 delphi 中有一个 GetStackTrace 函数,但我找不到适用于 delphi 7 的任何东西。不,升级不是一个选项:)

【问题讨论】:

  • 请注意,较新的 Delphi 版本中的 GetStackTrace 方法实际上并不返回堆栈跟踪。无论如何,您确实需要一个外部异常框架。
  • 您可以在几分钟内设置好 JCL。我在这个 SO 问题上发布了一个示例:stackoverflow.com/questions/1259563/…

标签: delphi exception stack-trace delphi-7


【解决方案1】:

您可以尝试使用madExcept,这是一个很棒的异常处理框架。

madshi 里面有大量的示例代码;我确定我以前使用过其中的堆栈跟踪内容。

正如 Dmitriy 所说,JCL 也有堆栈跟踪代码;旧样本是here

【讨论】:

  • 是的,madExcept 很棒——但这是我正在编写的商业代码,我认为我现在不能让公司购买 madExcept。 JCL听起来也不错,我会看看..
  • 并不是那么贵。你应该花多少小时来解决这个问题??
  • 是的 - 但是堆栈跟踪在这个项目中是一个不错的选择,所以我不会花太多时间来解决它。
【解决方案2】:

我在游戏中扔了EurekaLog。这是一个很棒的工具,而且一点也不贵。

【讨论】:

    【解决方案3】:

    MemChk 非常易于使用(尤其是搜索/查找内存泄漏)并且知道如何从代码地址呈现堆栈跟踪。

    【讨论】:

      【解决方案4】:

      Win32 中的堆栈跟踪不如 .NET 或 Java 的(并且 Delphi 的最新版本使用 .NET 堆栈跟踪)。
      无论如何,我找到了一个提供更多信息的链接here(它位于 ExeEx,因此要查看该解决方案,请单击搜索中的第一个链接)。

      查看页面底部。

      【讨论】:

      • -1。专家交流:“所有 cmets 和解决方案仅适用于高级服务会员。”
      • 我告诉过你在底部阅读!有解决方案。请在投票前正确阅读!
      • @Dmitriy:不,没有解决方案。不在底部,也不在其他任何地方。
      • ExEx 是偷偷摸摸的。如果你用谷歌搜索网址,然后点击来自谷歌的链接,你的推荐人就是谷歌,他们会告诉你解决方案。
      • SO 越早杀死他们越好。
      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 2012-12-21
      • 1970-01-01
      • 2023-03-25
      • 2023-03-18
      相关资源
      最近更新 更多