1

在 Delphi 7 中,如果我在Application.OnException事件处理程序中捕获了异常,那么我们如何找出应用程序的哪个函数或过程引发了这个未处理的异常?

我已经创建了一个应用程序并且正确地得到了异常,但是我如何打印导致这个异常的方法名称呢?

4

1 回答 1

1

这不是一件可以轻易做到的事情。您需要挂钩低级异常处理例程以获得可靠的堆栈跟踪。这是一个非常高级的话题。它需要对运行时库进行逆向工程。不能在 Stack Overflow 问题中合理地详细解释。

现有许多提供此类功能的第三方工具:madExcept、EurekaLog 和 JclDebug。我只有 madExcept 的经历,我非常赞同。然而,其他的辛苦,无论如何也非常好。

如果您想了解如何执行此操作,请查看开源的 JclDebug。如果您不需要学习并且只想将功能添加到您的程序中,请评估并选择其中一种工具。JclDebug 可能更难集成到您的程序中,因此如果您正在寻找一条快速简便的前进路线,其他两个中的一个可能更有价值。

于 2014-08-11T16:37:12.710 回答