100分問如何 debug EAccessViolation ( 积分: 100 )

  • 主题发起人 主题发起人 markburger
  • 开始时间 开始时间
M

markburger

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟使用Delphi 2006。網上說當 EAccessViolation 出現時,在IDE裡選擇菜單項“Search|Find Error…”,在對話方塊裡輸入錯誤發生的位址後,點擊“OK”按鈕。Delphi將會重新編譯你的工程檔,然後顯示發生運行期錯誤的那一行代碼。但 Delphi 2006 的search 下並沒有Find Error. 請問該如何 Debug?
請各位大大幫忙!
 
设置断点本身谈不上有什么技巧——只要能够看懂代码,就八九不离十了。况且市面上似
乎没有专门讲调试的书,只能自己逐步积累经验。
做为初学者,打好基础才是正道,花心思整什么百无一用的技巧,除了浪费时间,帮助实
在不大。

F4、F5、F7、F8、F9 Ctrl+Alt+W Ctrl+Alt+L Ctrl+Alt+S Ctrl+Alt+C 断点条件
——多用用即可。
 
要说技巧,留到softice里用吧
 
先找一兩本基本教程,或是網上的帖子,然後自己慢慢摸索
 
各位大大:
小弟已經看了幾本基本教程、資料庫、多線程的書, 寫了一個二、三萬行的程式。
但在執行不久後 (有時是一分鐘, 有時是五分鐘, 有時沒事發生)會彈出 EAccessViolation, 'Access violation at address 0042ADA4 in module 'POS.exe'. Read of address 00000000'. 的錯誤。按 Break 後又不會顯示是那一行程式出問題。從Error中我知道是某程序在呼叫一個不存在的物件。但就是找不到是那裡出錯。有沒有書或帖子可以教我如何解決?
多謝賜教!
 
你pos的string未分配内存或者已被改掉了。
 
POS.exe 是程式名, 如同 Project1.exe
 
我也曾经碰到过这种问题,就是在开发的电脑上调试百试百灵,但一到其它电脑上运行就不行,其它电脑安装配置软件配置均一样,换了多台电脑都不行!也是有时完全没事,有时运行不到几次就不行了,反正不定时或次数就报错,出的错误都类似你提出的一样,只是具体的地址不同!当时百思不得其解!

后来用我开发的电脑顶住过了那关后,经仔细分析后是其中的一个临时变量的值影响到调用该变量的控件中的一个函数的值变为空值,这个错误出现的时候大概的代码位置设置断点后用F7一步一步跟踪很多遍才发现的(因为设置断点后有时跟踪又没有问题,真是急啊!)
后来查到该变量有怀疑时,专门在调用它前用代码再次确认该变量值,问题最后终于彻底解决!追究其原因可能是系统的缘故。以上仅提供参考!
 
我就是跟踪了很多遍也找不到原因,有没有聪明点的方法?
高手救命~~~
 
如果你会汇编的话,可以从调试器出错的seh找到出错附近的代码...
 
请参考 http://www.delphibbs.com/delphibbs/dispq.asp?lid=3530752 中我的回答。
 
Include TD32 debug info 打了勾, 但仍是没有显示哪一行出了错.一定要放到别的机器上去运行,才会显示哪一行出了错吗? 感觉有些奇怪.
迟些试一试JVCL。谢谢!

但言归正传, Delphi 没有书教如何 Debug 的吗?
 
多人接受答案了。
 
后退
顶部