怎样捕捉AV(Access violation)?

hexenzhou hexenzhou 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
AV(Access violation)内存存取错误是经常会发生的事情,通常是使用了失效的指针,或是忘了回收分配的内存空间所引起的资源泄漏造成的。在运行期间产生的AV还好捕捉,至少大体上知道AV出现在什么地方。然而在退出程序时所引起的AV则最难捕捉。如果您也遇到了这样的情况,那么恭喜您,您遇到了和我一样的令人头痛的问题。
如果是第三方控件在退出程序时引起的AV,而这种AV又不是经常会发生,只是偶尔发生,那么又该怎么办了呢?我的应用程序使用了好多第三方控件,当然如果知道是哪个控件引起了AV,我最多不使用这个控件,问题的关键是我不知道是哪个控件引起了AV,总不能把第三方控件一梆子打死,全部不使用吧?

通常在运行期产生的AV,delphi会跳出对话框,其中会有一个“View CPU”的选项,通过查看CPU窗口,大体知道AV出现在什么地方。而退出程序所引起的AV,则不会有“View CPU”的选项,通常这个对话框是操作系统产生,不是Delphi调试环境产生的,比如这个AV对话款“Exception EAcessViolation in module Project1.exe at
00027564,access violation at adress 00427564 in module 'Project1.exe' write of Adress 001470785”。
请问各位是否有调试这类AV的高招,望不啬赐教,在下不深感激。
...全文
评论 16
收藏 已收藏
分享
返回顶部
hexenzhou
Delphi 5,944 成员 262,941 内容