是否可以使用JclDebug从引发异常的方法中获取参数值?

时间:2011-07-26 20:12:36

标签: delphi exception

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

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

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

任何人都可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

虽然使用JclDebug无法做到这一点,虽然手工操作可能需要做很多工作,但您可能会发现任何日志工具(包括Log4D,CodeSite甚至outputdebugString)都可以用更少的工作来完成。事实上,在您选择插入此类日志记录的任何位置,都会插入代码来记录您的参数调用。它还可以在引发异常时插入特殊标记,允许您重建导致崩溃的确切方案。

但是,由于CodeSite只在异常即将发生时才会这样做(它会怎么样?)这并不是你想要的。但我确实发现,合理的跟踪日志与jcl堆栈回溯(或者makeexcept或eurekalog)相结合是绰绰有余的,如果我真的需要知道调用中涉及的所有参数值,我应该回去添加更多跟踪消息。