【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 >= 0 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;这样就好了

时间: 2024-10-26 06:45:00

【MyBean调试笔记】接口的使用和清理的相关文章

OMAPL138调试笔记

title: Linux 嵌入式使用 tags: 新建,模板,小书匠 grammar_cjkRuby: true Copyright (C) @2018 Widic Filename: File-function: Cre_ID: @ Widic 2018-1-23 Mod_ID: 三 学习过程 20170617 uart2 作为调试串口 band rate 115200 串口调试终端采用ZOC 3.开发板启动开官如下: SD卡挂载boot分区挂载在/media/mmcblk0p1 u盘挂载的方

USB wifi调试笔记

本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中WiFi选项,将其置为on(打开),但最终结果是自动变成off(关闭).正在打开Wi-Fi.正在扫描等一系列不能正常打开WiFi的提示. 2.问题分析流程 WiFi打不开从硬件和软件两方面进行定位,一般是先硬件,然后软件.总体分析流程如图: 3.确认硬件可以识别 8192CU WiFi模块是基于usb接

《TCP/IP详解卷2:实现》笔记--接口层

提示:该实验所在的平台是在RedHat 6下 该实验成功的前提有三个: (1):windows能ping通linux系统 (2):关闭linux的防火墙 :执行指令 /etc/init.d/iptables  stop (3):让SeLinux关闭  :执行指令:  setenforce permissive 补充: SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.SELinux 是一个

《格蠹汇编》调试笔记

以前也就是把Windbg作为一个调试所写驱动的调试器.只进行源码级的调试,运用的比较浅显. 最近研读张银奎老师的<软件调试>获益良多,刚好与之配套的<格蠹汇编>提供了老师大量的调试经验以及实验环境.不拿来好好实践一番简直浪费. 0X01调试笔记之侦查广告插件 俗话说:工欲善其事,必先利其器.对于调试领域来说,更是如此.我们不但要在自己的计算机中安装有WinDbg,还应当使用JIT调试的方法.因为对于Windows系统中的应用程序的崩溃问题,JIT调试是非常有效的办法,而且JIT调试

如何在本地调试微信接口

1.调试微信接口需要有自己的服务器资源 假定已经将程序部署到服务器上,并且能够正确接收微信服务器发送过来的请求 2.记日志 将微信发送的请求转换成 url,以及post数据体 WxStream = context.Request.InputStream; StreamReader reader = new StreamReader(WxStream); WxContent = reader.ReadToEnd(); var absoluteUri = context.Request.Url.Ab

SIM900A基站定位调试笔记 -转

第1步:ATE1 握手并设置回显 第2步:AT+CGMR 查看SIM900的版本信号 第3步:AT+CSQ 查看信号质量 第4步:AT+CREG? 查看GSM是否注册成功 第5步:AT+CGREG? 查看GPRS是否注册成功 第6步:AT+CGATT? 查看GPRS附着状态 第7步:AT+SAPBR=3,1,"CONTYPE","GPRS" 设置网络参数 第8步:AT+SAPBR=3,1,"APN","CMWAP"  //设置

《TCP/IP详解卷2:实现》笔记--接口层:以太网和环回

1.以太网接口 Net/3以太网设备驱动程序都遵循同样的设计.对于大多数Unix设备驱动程序来说,都是这样,因为写一个新接口卡的驱动 程序总是在一个已有的驱动程序的基础上修改而来的.下面我们简要地概述一下以太网的标准和一个以太网驱动程序的设 计.下图是一个IP分组的以太网封装. 我们所讨论的最初的以太网组帧的标准在1982年由Digital设备公司,intel公司以及施乐公司发布,并作为今天在TCP/IP网络 中最常使用的格式,另一个可选的格式是IEEE规定的802.2和802.3标准. 下图列

Tomcat调试笔记

调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是32bit 的Tomcat不能在AMD 64-bit的platform 上面运行,但是经过查看我发现自己的tomcat和java都是64bit的. 查看tomcat的版本号的链接:→ http://jingyan.baidu.com/article/e73e26c0c4b40024adb6a789.

linux 接口地址全部清除才清理从此接口发出的下一跳路由

接口地址全部清除才清理从此接口发出的下一跳路由 如: eth7配置两个地址 eth7: 192.168.1.1 10.1.1.1 添加一条路由: route add -net 2.2.2.0/24 gw 10.1.1.254 然后删除eth7上的地址 10.1.1.1 查一下路由表, 下一跳10.1.1.254还在 ~ # ip route show all2.2.2.0/24 via 10.1.1.254 dev eth7 linux 对此处理不太合理, 应该自动删除较好.