【MyBean调试笔记】接口的使用和清理

简介: 【DEMO信息】    有问题的DEMO, 由芒果提交 【问题描述】 双击Tab页面关闭页面和插件的时候出现AV异常      【问题调试】 我们在调试的时候出现这个错误时断点停在这里   可以看到停留在这个位置@IntfClear,指针清理的位置 好我们来调试下这个过...

【DEMO信息】

   有问题的DEMO, 由芒果提交

【问题描述】

双击Tab页面关闭页面和插件的时候出现AV异常

   image

 

【问题调试】

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

image

 

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

image

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

`TDZCGURW[(RGU7B72)5CNY

跟进去后,一会就跳到错误的界面,可以说明在清理时出现的,这个时候我们来看看这段代码

 

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

目录
相关文章
|
并行计算 Shell PyTorch
【ChatGLM2-6B】我在3090显卡上部署了清华大学开源中英双语对话模型
【ChatGLM2-6B】我在3090显卡上部署了清华大学开源中英双语对话模型
490 0
|
Web App开发 Shell 开发工具
一篇清晰易懂的Python操控手机APP攻略!
一篇清晰易懂的Python操控手机APP攻略!
2640 0
一篇清晰易懂的Python操控手机APP攻略!
|
存储 安全 网络协议
Meterpreter命令详解
Meterpreter命令详解
1147 0
|
资源调度 JavaScript 前端开发
FullCalendar - 开源的多功能 JavaScript 日历插件
FullCalendar 是一个支持 React、Vue、Angular 和原生 JavaScript 的日历插件,FullCalendar 拥有超过 300 种设置,支持模块化导入,几乎可以实现任何效果。
1148 0
FullCalendar - 开源的多功能 JavaScript 日历插件
|
设计模式 测试技术 API
干货 | 通用 api 封装实战,带你深入理解 PO
干货 | 通用 api 封装实战,带你深入理解 PO
|
安全 Unix Shell
看完这篇 教你玩转渗透测试靶机vulnhub——DC8
看完这篇 教你玩转渗透测试靶机vulnhub——DC8
605 0
看完这篇 教你玩转渗透测试靶机vulnhub——DC8
|
人工智能 运维 监控
云上故事 | “电”亮数字生活,阿里云助力南方电网智能调度
要评选全球最耗电的城市,非赌城拉斯维加斯莫属。提起这个名字,首先让人想到的就是纸醉金迷、夜夜笙歌的娱乐生活。如此造成的耗电量也颇为惊人。为了支持庞大的观光设施,赌城的巅峰耗电量超过了土耳其全境,每晚用电量等于新加坡全年。为此,自2008年起拉斯维加斯政府就推动了一项节能省电的方案,采用可再生能源供电公共设施。但即便如此,其用电总量依然非常惊人,单是人均耗电就达到北京的30倍之多。不过从另一个层面讲,用电量的消耗恰恰体现了城市的现代化程度。
2633 0
云上故事 | “电”亮数字生活,阿里云助力南方电网智能调度
|
人工智能 算法 Cloud Native
独家下载!《AI开发者的Docker实践》
本文档主要面向算法开发同学,从0基础实现将代码打包docker镜像-调试-提交仓库-提交云服务训练模型/天池大赛提交/学校服务器训练 等流程。也同样适用于初次接触docker的同学,帮助大家快速上手大赛提交和远程服务器训练。
25620 0
独家下载!《AI开发者的Docker实践》
|
开发者
《钉钉应用开发者速成手册》之“注册钉钉开发者”
在开始使用开放平台提供的能力进行应用开发前,需要先完成钉钉开发者注册。
1413 0
《钉钉应用开发者速成手册》之“注册钉钉开发者”

热门文章

最新文章