如何在Delphi中找到"List index out of bounds"错误的位置

lke*_*ler 10 delphi error-handling bounds-checker

在Delphi 2009中,我的程序现在生成"List index of bounds"错误.它会生成一个弹出框:

alt text http://www.beholdgenealogy.com/img/boundserror.gif

我正在使用"调试"构建配置,该配置已启用所有运行时错误检查.但这并没有在错误发生之前捕获错误.

是否有任何简单的方法可以在我的程序中找到此错误的来源,而无需通过反复试验来缩小断点并缩小范围?

The*_*Fox 11

你有"Stop on Delphi Exceptions"吗?(Tools\Debugger Options\Language Exceptions [Delphi7])否则它不会在您的源代码中断.

还要确保EListError不在"要忽略的异常类型"列表中.此列表也可在Tools\Debugger Options\Language Exceptions(Delphi 7)中找到.


Sea*_*anX 9

madExcept(免费)或EurekaLog(付费)可能有所帮助.您可以将它们设置为在发生错误时显示/通过电子邮件发送堆栈跟踪.我在所有项目中使用EurekaLog,它对于修复这些事情是非常宝贵的.

  • JCL有类似的产品,真的是免费的. (3认同)
  • 仅供参考madExcept仅供非商业用途免费使用. (2认同)

Ale*_*lex 8

嘿,你不需要任何额外的工具来跟踪这个!:)

正是在调试器中运行应用程序,并确保"停止对德尔福例外"(或任何它被称为在你的Delphi的版本)变为ON.

发生异常时 - 将从调试器发出通知.按"确定"/"调试"按钮,只需查看调用堆栈.最近的Delphi版本会自动显示调用堆栈窗口.如果你看不到它 - 转到"查看"/"调试Windows"/"调用堆栈".

就这样.调用堆栈将指向您到问题的确切位置.无需其他工具.

如果您在用户之间分发程序并希望收集有关客户端问题的错误报告,则需要这些工具(EurekaLog,JCL或madExcept).即没有调试器来检查问题.

  • "希望,"Behold"很快就会成为标准" - 实际上,我只是说你可以尝试在你的来源中找到这个字符串,并且可能会有一些暗示.这就是全部:D (2认同)