【问题标题】:Is possible to use JclDebug to get the parameters values from the method that raised the exception?是否可以使用 JclDebug 从引发异常的方法中获取参数值?
【发布时间】:2011-07-26 20:12:35
【问题描述】:

我使用函数“JclGetExceptStackList”来记录引发异常的调用堆栈。

我希望,如果可能的话,还记录引发异常的方法中的参数值。

我不知道是否可以使用 JclDebug 来做到这一点,或者是否存在任何其他方式来做到这一点。

谁能帮帮我?

谢谢!

【问题讨论】:

标签: delphi exception


【解决方案1】:

虽然使用 JclDebug 无法做到这一点,而且手工完成可能需要大量工作,但您可能会发现任何日志记录工具,包括 Log4D、CodeSite 甚至 outputdebugString,都可以用更少的工作来完成。实际上,它会在您选择插入此类日志记录的任何地方插入代码来记录您的参数调用。它还可以在引发异常时插入特殊标记,让您重建导致崩溃的确切场景。

但由于 CodeSite 不会仅在将要发生异常时才执行此操作(它会如何发生?),这并不是您想要的。然而,我确实发现,一个合理的跟踪日志,结合 jcl 堆栈回溯(或 madeexcept 或 eurekalog)已经绰绰有余,如果我真的需要知道调用中涉及的所有参数值,我应该回去添加更多跟踪消息。

【讨论】:

  • +1 因为答案指定参数应该是记录材料的一部分。
【解决方案2】:

这通常是不可能的,因为参数通常在寄存器中传递。每次进行过程调用时都会被覆盖。

【讨论】:

  • 感谢您的回答,我不知道这样做是不可能的。
  • 这在 Java 和 C# 中可能是可能的,因为它们具有更深的运行时反射能力,但 Delphi 优先考虑运行时性能而不是运行时的高级检查。
猜你喜欢
  • 1970-01-01
  • 2020-10-13
  • 2013-04-21
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
相关资源
最近更新 更多