欢迎交流解决“Access violation”之类错误的好办法

wyj2 2000-01-29 10:53:00
有时候调试程序时会遇见一些找不到根源的异常出现。"Access violation”即是最常见的一种,当然,大部份的情况可以通过仔细的查找而解决,但有时偏偏就是怎么也找不到根源所在,比如说使用了复杂的线程或第三方控件等等,最痛苦的莫过于异常有时候突然不见了,让你搞不清倒底是已被自己莫名其妙地解决了还是它只是暂时睡一觉而已,就象不定时炸弹一样恐怖。
敢问除了一行一行地查找程序之外各位大哥平时都用些什么好办法?多谢
...全文
1753 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
olo 2000-02-01
  • 打赏
  • 举报
回复
>>
wyj2 2000-02-01
  • 打赏
  • 举报
回复
再设有了么,我要给分喽?
wyj2 2000-02-01
  • 打赏
  • 举报
回复
谢谢
barton 2000-02-01
  • 打赏
  • 举报
回复
除了在对象中可能出现的总是问题外,我发现了一种新的可能性:如果这个字符
串只有两个字节甚至根本为空,当访问Str[3]或PChar强制时出现越权访问。
wyj2 2000-01-31
  • 打赏
  • 举报
回复
谢谢大家的无私帮助。我也认为大多数的此类错误一定发生在对象的创建和释放过程中,只是发生错误时我往往摸不着头脑,因为涉及到的对象很多,DELPHI又不会在出错处显示出来,所以不知该从哪儿下手。NETMARE大侠的方法可能是一个好办法,可在DELPHI中如何实现呢?KXY大侠的习惯不错,可以怎样做才可以达到“神经质”的标准呢,难到把控件的每一行都分析一遍吗?有一本书上说DELPHI只要把“优化”选项去掉,就可以自动捕获所有的异常并定位到相关的源程序中,是不是这样?如果是的话怎么做呢?谢谢大家提供宝贵的经验。
wyj2 2000-01-31
  • 打赏
  • 举报
回复
谢谢您,老K
kxy 2000-01-31
  • 打赏
  • 举报
回复
如果你是用VCL的标准控件,或自己写的控件,写程序时要注意一下,一般
是自己写错了.
如果是用别人的控件,一般我都是只使用有源码的.编译时把控件的源码的
路径加上.如果delphi的调试器能定位错误ok,否则link选项把td的调试
信息加上,用turbo debug32 来调试,如果还搞不定.就使用bounds check
来调.(csd.net有下载).如果还不行,就大骂TMD谁写的狗屁控件,然后把那
该死的控件源码看一遍,或者上网另找一个.
BTW:softice也可以调试源码.
starlyq 2000-01-30
  • 打赏
  • 举报
回复
其实这和Delphi本身有关,并非都是程序员的错
kxy 2000-01-30
  • 打赏
  • 举报
回复
我写程序时,有一个条件反射,凡是和内存相关的东西,我用
他们时都神经枝的去看是否创建,是否越界等.然后才用他们:)
Venne 2000-01-30
  • 打赏
  • 举报
回复
同意YJQ,这个问题一般都是发生在你访问一个未被赋值的指针的时候出现。例如,你声明了一个TStringList的变量,但是你没有创建它的实例,在代码里就开始调用它的过程或者方法,百分之百这个问题会蹦出来。其实的控件也是一样的,除非你调用其类方法之外,每个类的其他方法或者过程都必须实例化以后才可以调用。这样,你就需要着重检查你自己创建了新的类实例或者新变量时有无这方面的错误。
另外,在释放你创建的实例的时候最好一直使用Free方法,这样,可以保证不对一个NIL指针进行释放,很多时候,用DESTROY也可以正确,但是,如果一旦这个实例在调用之前已经为NIL,则也会出现同样的错误。
所以,检查你创建的对象(特别是一些简单类型之外的数据类型)的创建和释放是最重要的。
netmare 2000-01-30
  • 打赏
  • 举报
回复
在你的程序中记log,以c/c++为例,写如下语句"logstream<<__FILE__<<__LINE__<<endl;",该句将程序执行的位置记录到文件中(运行到哪个.c的第几行),在你怀疑有可能出错的地方粘贴这句,一开始贴的范围大一点,发生Access violation后,察看log文件,出错的地方肯定在log中记录的最后一行之后,这样一点点缩小范围,最后总可以找到出错的地方,估计比一行一行地查要快一些.
渤海海峡 2000-01-29
  • 打赏
  • 举报
回复
我认为一般都出项在对象的create或free时。
blaise 2000-01-29
  • 打赏
  • 举报
回复
u already know the way:一行一行地查!

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧