- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在运行 Delphi 2009。当我尝试在表单编辑器中查看表单时,我不断遇到堆栈溢出。所以我做了别人都会做的事情。我使用 Delphi 来调试自身,或者更确切地说是 IDE 的另一个实例。
所以我知道溢出发生在哪里,但我只是不知道该怎么办。此表单上有一个自定义组件,它拦截对 TForm.WindowProc
的调用,以便它可以响应某些 winapi 消息。当组件调用 real WindowProc
时,会发生堆栈溢出。
当我中断异常时,调用堆栈充满了数百个调用:
delphicoreide120.@Comppalmgr@TComponentPalettePageItemDelegate@CheckValid
到目前为止,我还没有成功地追踪到传递给 WindowProc 的实际消息。
如有任何帮助,我们将不胜感激。
更新
我已经取得了一些进展。追踪到似乎将其关闭的消息。它是 WM_CHILDACTIVATE。当此消息传递到表单的 WindowProc
时,它会在 IDE 中引发一系列调用,最终导致堆栈溢出。现在我只需要找出原因。
最佳答案
当 EStackOverflow 时你能打破吗?异常本身正在生成(即在SysUtils单元的MapFault
或ErrorHandler
函数中)或者仅当EStackOverflow已经引发时?
当您无法中断时:当调试器启动时,堆栈可能已经部分损坏。
如果你可以在那里中断,就这样做,然后尝试浏览堆栈(较新的 Delphi 版本更擅长)以在 WindowProc 中找到有问题的参数。
调试Delphi表单设计器时;双显示器或大屏幕设置非常方便:您可以在显示器的一侧(一侧)运行有问题的 Delphi 实例,在另一侧运行调试 Delphi 实例。
编辑:虽然我在回答中提到了大屏幕
和侧面
,以使调试步骤更加清晰:
--杰罗恩
关于delphi - 在 Delphi IDE 中排除 EStackoverflow 异常的提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534457/
堆栈的一小部分 :0047fe17 TControl.Perform + $27 :0047eb54 TControl.FontChanged + $40 :0043797f TFont.SetDat
我注意到 SysUtils.pas 中定义的 EStackOverflow 在 Delphi 2009 中被标记为已弃用。我检查了一下,它在 2007 年也被标记为已弃用。我这里有一张 Delphi
有时我的项目中出现 EStackOverflow 异常。我使用 Delphi 2010 和最新版本的 VirtualTreeView。 Eurekalog 生成的报告包含这样的无限循环: (这是错误报
我有一个使用类的应用程序,一个名为 TBaseDB 的基类,并且会有许多 TBaseDB 的后代,所有直接兄弟,现在只有一个已经启动,TOraDB,但稍后会添加 TSQLDB 和其他。 我的应用程序使
我正在运行 Delphi 2009。当我尝试在表单编辑器中查看表单时,我不断遇到堆栈溢出。所以我做了别人都会做的事情。我使用 Delphi 来调试自身,或者更确切地说是 IDE 的另一个实例。 所以我
在 Borland Delphi 7.0 中创建打包结构时遇到 EStackOverflow 我想要执行以下操作: Type T4 = packed record VT : intege
我是一名优秀的程序员,十分优秀!