delphi - 在 Delphi IDE 中排除 EStackoverflow 异常的提示

标签 delphi ide stack-overflow

我正在运行 Delphi 2009。当我尝试在表单编辑器中查看表单时,我不断遇到堆栈溢出。所以我做了别人都会做的事情。我使用 Delphi 来调试自身,或者更确切地说是 IDE 的另一个实例。

所以我知道溢出发生在哪里,但我只是不知道该怎么办。此表单上有一个自定义组件,它拦截对 TForm.WindowProc 的调用,以便它可以响应某些 winapi 消息。当组件调用 real WindowProc 时,会发生堆栈溢出。

当我中断异常时,调用堆栈充满了数百个调用:

delphicoreide120.@Comppalmgr@TComponentPalettePageItemDelegate@CheckValid

到目前为止,我还没有成功地追踪到传递给 WindowProc 的实际消息。

如有任何帮助,我们将不胜感激。

更新

我已经取得了一些进展。追踪到似乎将其关闭的消息。它是 WM_CHILDACTIVATE。当此消息传递到表单的 WindowProc 时,它会在 IDE 中引发一系列调用,最终导致堆栈溢出。现在我只需要找出原因。

最佳答案

EStackOverflow 时你能打破吗?异常本身正在生成(即在SysUtils单元的MapFaultErrorHandler函数中)或者仅当EStackOverflow已经引发时?

当您无法中断时:当调试器启动时,堆栈可能已经部分损坏。

如果你可以在那里中断,就这样做,然后尝试浏览堆栈(较新的 Delphi 版本更擅长)以在 WindowProc 中找到有问题的参数。

调试Delphi表单设计器时;双显示器或大屏幕设置非常方便:您可以在显示器的一侧(一侧)运行有问题的 Delphi 实例,在另一侧运行调试 Delphi 实例。

编辑:虽然我在回答中提到了大屏幕侧面,以使调试步骤更加清晰:

  1. 首先确保 Delphi 的调试实例和有问题的实例在视觉上不会重叠。
  2. 然后慢慢地越来越多地重叠有问题的 Delphi 实例,直到出现堆栈溢出。

--杰罗恩

关于delphi - 在 Delphi IDE 中排除 EStackoverflow 异常的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534457/

相关文章:

javascript - 是否有任何 IDE/IDE 插件支持 JavaScript CommonJS 模块?

Java 列表排列 stackoverflow

java - 当没有无限递归方法时,是什么导致了这个堆栈溢出错误?

delphi - 使用 fontdialog 和 RichEdit 更改事件控件

DELPHI - 如何在 VCL 表单应用程序中更改 TButton 背景颜色?

delphi - Delphi和Fitnesse/fit4delphi的例子?

delphi - delphi 如何获取日期时间选择器的限制

selenium - SELENIUM IDE 命令的完整列表

ruby-on-rails - 对于 Visual Studio 用户来说,最好的 Ruby on Rails 环境是什么?

java - Stackoverflow 是由简单的代码引起的