如何调试 Delphi 上的 CPU 选项卡?

How to debug the CPU tab on Delphi?

我正在使用 Delphi 11。有时会发生异常,而不是 Delphi 转到抛出异常的单元,而是转到这个 CPU 屏幕,并且我不知道该怎么办。

遇到这种情况我该怎么办?

可能会有更好的答案,但我想你可能会看看 EurekaLog or madExcept。两者都很好用。一直不太明白为什么这不是 built-in 到 Delphi。

这种屏幕通常意味着 CPU 试图从中执行代码的内存地址中没有代码。这很可能意味着 class 方法是通过一个无效但不是 nil 的指针在一个对象上调用的,或者一个函数是通过一个类似的无效函数指针调用的。

您将无法调试引发异常的位置,因为它是一个无效的内存地址。但是您仍然应该可以访问导致异常的函数调用的 Call Stack 跟踪。因此,只需返回调用堆栈,直到您重新输入有效代码,然后从那里进行调试以找到无效指针。