list out of bounds(0),如何找到溢出链表在程序中的什么地方(100分)

  • 主题发起人 icelily7631
  • 开始时间
I

icelily7631

Unregistered / Unconfirmed
GUEST, unregistred user!
我们现在遇到了这样一个问题, 在我们编制的一个较为庞大的系统中,偶而会出现out of bounds(00
这样的链表下溢出错误, 而且错误发生没有规律可循, 我该如何在这么庞大的系统中把这个
bug给找出来, delphi自己的调试工具能不能完成这样的任务, 如能不能设置监测系统中所有
链表的运行状况。 或者其他还有什么好办法, 希望各位帮帮忙。 谢谢。
 
这种错很好找呀。 只要找动态数组或TList, TStringList等类型变量有没有未判断是否为空就直接调用其中的元素了。(out of bounds (0)表示当前数组未空或list.count=0时调用了第一个元素, 如array[0]或list.items[0])
 
当出现这个错时,用单步跟踪找到出错的代码,再找原因,很好解决的!
 
to pearl:
关键是程序太庞大了,用到数组或链表的地方不计其数, 如果把程序中所有出现数组或链表应
用的地方的代码都检查一遍不太现实。而且这个错的出现极为偶然单步跟踪也很难进行。请问
还有没有什么别的方法, 或者说怎样跟踪能更快定位这个BUG。
 
to 伊天仇
你的方法倒是比较可行, 可是这个错误出现的偶然性极大, 有时程序运行了很长时间才
偶然出现一次, 有时甚至很长时间都不出来, 无任何规律可循, 除单步跟踪外还有没有
什么更好的办法呢? 谢谢
 
在操作之前先判断 itemindex,如果<0 then
exit
 
用BoundsChecker可以检测出来
 
这种情况是比较麻烦,我刚好也碰上了,也已经解决了!就是在debug环境下出现这个错时,
确认后单步跟踪找出来的!至于其它方法就sorry了。
 
多人接受答案了。
 
顶部