17

Delphi 2009 中的异常类获得了许多新特性。其中一些与获取堆栈跟踪有关:

  • 属性StackTrace:字符串 读取GetStackTrace;
  • 属性StackInfo:指针读取FStackInfo;
  • 类 var GetExceptionStackInfoProc:函数(P:PExceptionRecord):指针;
  • 类 var GetStackInfoStringProc:函数(信息:指针):字符串
  • 类 var CleanUpStackInfoProc:过程(信息:指针);

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

更新:一篇关于此的兴趣博客文章。涵盖了很多深度。

4

4 回答 4

8

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

于 2008-11-14T13:21:50.407 回答
2

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

于 2008-11-13T10:27:12.950 回答
2

TOndrej 是正确的。添加到 Exception 类的新功能是供第三方将他们自己的堆栈跟踪代码挂钩到 RTL。Exception 类的默认实现不会产生它自己的堆栈跟踪。

于 2009-02-13T02:27:50.020 回答
2

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

于 2009-02-13T10:27:24.970 回答