【MyBean调试笔记】接口的使用和清理
【DEMO信息】
有问题的DEMO, 由芒果提交
【问题描述】
双击Tab页面关闭页面和插件的时候出现AV异常

【问题调试】
我们在调试的时候出现这个错误时断点停在这里

可以看到停留在这个位置@IntfClear,指针清理的位置

好我们来调试下这个过程,跟一下是什么时候出现的, 在end 处下个断点后切换到cpu页,我们看到在ret之前调用了一过程,这个地址应该是做一些清理工作后然后返回到调用者地址,

跟进去后,一会就跳到错误的界面,可以说明在清理时出现的,这个时候我们来看看这段代码
procedure TfrmMain.pgcMainMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Index: Integer;
lvPluginForm: IPluginForm;
lvTabShtEx:TTabShtEx;
begin
// 左键点击并且双击
if (Button = mbLeft) and (ssDouble in Shift) then
begin
Index := pgcMain.IndexOfTabAt(X, Y);
if Index >= then
begin
lvTabShtEx := TTabShtEx(pgcMain.Pages[Index]);
lvPluginForm := lvTabShtEx.PluginForm;
if Application.MessageBox('确认要关闭画面吗?', '询问', MB_OKCANCEL + MB_ICONQUESTION) = IDCANCEL then
Exit;
lvPluginForm.freeObject;
pgcMain.Pages[Index].Free;
end;
end;
end;
这段代码中有一个lvPluginForm为接口IPluginForm变量, 过程在退出时会执行lvPluginForm := nil和其他一些资源的清理工作,清理的时候会触发对象的__release方法,但是我们看到这个对象已经释放掉了,然后在进行清理的时候出现了上面看到的访问违规的错误。
【问题解决】
找到出现问题的根本,解决起来就很快了,尽量不要等到过程清理时在去清理你的资源,特别是可能访问不存在的资源。在end;之前 加一句lvPluginForm := nil;这样就好了
【MyBean调试笔记】接口的使用和清理的更多相关文章
- 【MyBean调试笔记】关于单元的释放顺序
[概述] DEMO提交人:惠商软件 2508696439 问题描述:MDIConsole, DEMO如果Forms单元引用顺序放在mybean.console.pas文件之后如下图所示时: 创建同一 ...
- USB wifi调试笔记
本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中Wi ...
- Tomcat调试笔记
调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是 ...
- linux 接口地址全部清除才清理从此接口发出的下一跳路由
接口地址全部清除才清理从此接口发出的下一跳路由 如: eth7配置两个地址 eth7: 192.168.1.1 10.1.1.1 添加一条路由: route add -net 2.2.2.0/24 g ...
- JavaScript特效(调试笔记)
JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: function getTime() { var today = new Date() ...
- CC Debugger调试下载接口
调试下载接口: 引脚序号 引脚名称 相关说明 1 GND 地线 2 VDD 目标板电源正端 3 DC 调试-时钟线 4 DD 调试-数据线 5 CSn 下载-片选线(低电平有效) 6 SCLK 下载- ...
- 如何调试webservice接口是否正常
soapui 调试webservice接口 1首先iis 部署网站 2添加webservice 3附加到进程调试 找w开头的 4然后request填充数据
- ida动态调试笔记
ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...
- 使用soapUI5.3.0调试webservice接口(参数为XML格式)
最近项目中经常要调试webservice接口,从朋友处了解到他们经常使用SoapUI,因此学习一下这个工具的使用,为避免遗忘,特地记录下来,分享分享... 下载 #####首先,下载SoapUI,我下 ...
随机推荐
- IBatis.Net 视频教程 原创教程
IBatis.Net 视频教程 列文件:共21个 Ibatis.Net 第01课 了解 和下载.avi Ibatis.Net 第02课 搭建简单三层项目 引入Ibatis.avi ibatis.net ...
- centos7用xshell可以连接, xftp连接失败!(墙裂推荐)
环境: vultr vps搭建的是centos7 毛病: xshell可以连接, 打开xftp配置好连接却连接失败如下图: 然后开始设置ssh的配置文件vim /etc/ssh/sshd_confi ...
- Linux下Setuid命令! 转载
Linux下Setuid命令! 转载 在Linux系统中每个普通用户都可以更改自己的密码,这是合理的设置. 问题是:用户的信息保存在文件/etc/passwd中,用户的密码保存在文件/etc/sha ...
- mysql5.7创建用户授权删除用户撤销授权
一, 创建用户: 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - ...
- Google大数据技术架构探秘
原文地址:https://blog.csdn.net/bingdata123/article/details/79927507 Google是大数据时代的奠基者,其大数据技术架构一直是互联网公司争相学 ...
- 关于VC++的增量链接(Incremental Linking)
增量链接(Incremental Linking)这个词语在使用Visual C++时经常会遇到(其实不只是VS系列,其它链接器也有这个特性), 就比如经常遇到的:上一个增量链接没有生成它, 正在执行 ...
- Oracle VPD策略示例
1.未创建前使用oe用户登录查询: SQL> select * from orders; ORDER_ID ORDER_DATE ORDER_MO CUSTOMER_ID ORDER_STATU ...
- 乙醇的webdriver实用指南java版本
启动浏览器 关闭浏览器 浏览器最大化 设置浏览器大小 访问链接 打印当前页面的title及url 前进和后退 简单的对象定位 定位一组对象 层级定位 操作测试对象 send keys模拟按键输入 处理 ...
- 【转载并整理】ORACLE锁机制
转载文章:http://blog.csdn.net/liuyiy/article/details/25005393 转载文章:http://www.cnblogs.com/jiyuqi/p/37017 ...
- [转]iptables 命令介绍
iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙.如果你是第一次 ...