在Delphi 2009中挂钩Stacktrace

时间:2008-11-13 09:30:13

标签: delphi exception delphi-2009 stack-trace

Delphi 2009中的Exception类获得了许多新功能。其中一些与获取堆栈跟踪有关:

  • 属性 StackTrace:字符串 读取 GetStackTrace;
  • 属性 StackInfo:指针读取 FStackInfo;
  • class var GetExceptionStackInfoProc: function (P:PExceptionRecord):指针;
  • 类var GetStackInfoStringProc:功能(信息:指针):字符串;
  • class var CleanUpStackInfoProc:程序(信息:指针);

有没有人用这些来获取堆栈跟踪呢?是的,我知道有其他方法可以获得堆栈跟踪,但如果它在Exception类中本身支持,我宁愿利用它。

更新:有兴趣blog post about this。涵盖了很多深度。

4 个答案:

答案 0 :(得分:8)

对我而言,这看起来像一个框架,您可以插入自己的堆栈跟踪。我想这可能会在IDE内部使用JCLDebug。也许它的目的是让用户能够提供madExcept或其他实现。

答案 1 :(得分:2)

不,我还没有使用它们(目前正在使用madExcept,并且还使用JclDebug进行了一些实验) - 但感谢提示!

答案 2 :(得分:2)

TOndrej是对的。添加到Exception类的新功能是为第三方将自己的堆栈跟踪代码挂钩到RTL中。 Exception类的默认实现不会产生自己的堆栈跟踪。

答案 3 :(得分:2)

建议你看看MadExcept。它不仅提供了对任何未处理的异常(屏幕抓取,电子邮件等)的出色处理,而且它有一组很好的可调用例程,可以将您回溯到几乎可以在任何地方使用的堆栈跟踪。 BRI