首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序成功关闭后的AV

应用程序成功关闭后的AV
EN

Stack Overflow用户
提问于 2012-02-20 03:42:40
回答 3查看 1.2K关注 0票数 1

在应用程序按预期关闭大约3到5秒后,我收到此AV消息:

00073225处模块rtl160.bpl中的异常EAccessViolation。模块'rtl160.bpl‘中地址500A3225的访问冲突。读取地址00000004。

这些(20)应用程序非常相似,因为它们都是IBX业务应用程序。其中大约一半没有引起房室颤动的发生。

这些应用程序是从Delphi-xe移植过来的,它们在很长一段时间内都能完美地工作。港口中的项目没有任何变化。32位和64位构建给出了相同的结果。

这是不是某个库的终结区释放资源或其他东西的bug?

我使用的是Delphi-XE2 Update 3。

会很感谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2012-03-09 05:28:20

尝试使用madExcept / EurekaLog等--它们会给你在AV上的详细堆栈跟踪。这并不总是灵丹妙药,但可以为您指出问题所在。

票数 3
EN

Stack Overflow用户

发布于 2012-06-07 03:01:51

访问冲突本质上已经很麻烦了,因为它们处理内存中的无效指针。在应用程序关闭一段时间后发生的情况甚至更糟,因为此时您的应用程序处于“清理”模式。您可能正在处理应用程序中较早出现错误的情况,但只在关闭时暴露出来。

一般提示:

  • 会尝试始终以与撤消顺序相反的顺序撤消它们。例如,
    • 创建A,创建B ...销毁B,销毁A
    • 连接到数据库,打开数据集...关闭数据集,断开与Database

的连接

即使在关机前确保您已经完成了上述所有操作,也可以帮助tremendously.

  • Any线程在应用程序运行时仍在运行,这可能会导致问题。
  • 甚至可以确保您在关闭应用程序之前已经完成了上述所有操作。在最终shutdown.
  • Refer返回到上面的关闭数据集之前,
    • 最好确保所有的子线程都被正确地终止。根据您正在执行的操作,某些数据库组件将创建自己的threads.

  • 如果您使用的是COM,请尝试确保ComObj在初始化序列中处于较高的位置(即,将其尽可能放在DPR中的较高位置)。在其他依赖于initialized.
  • And的东西也完成so.

之前,

  • Delphi以它们是so.

的相反顺序来完成单元你不想让ComObj完成

  • 如果您正在使用接口引用,请确保您解决了循环引用问题。
  • 其中一些问题可能很难找到,但您可以执行以下操作:
    • 设置源代码“沙盒”环境(一旦您找到了保证错误所需的最简单的一组步骤,您将丢弃所有更改。(启动应用程序并立即关机将是理想的。)然后,您将在测试之间注释、删除、擦除代码块,并基本上遵循一种分而治之的方法:rip out code
    • test
    • if
      • rip the problem,repeat。否则,回滚并取出不同的code.

代码语言:javascript
复制
- eventually your code base will be small enough to pinpoint likely problems which can be tackled with targeted testing.

票数 3
EN

Stack Overflow用户

发布于 2017-06-21 19:35:33

在以前的Delphi或C++Builder项目中,我有时会遇到这种访问冲突问题。今天我和C++Builder在一起。在崩溃时,通过查看Debug Stack窗口,我可以看到它是在__exit_streams和_exit调用的->调用中发生的。

我不确定是什么导致了它,因为它在Borland库代码中太深了,但当代码发生变化时,它似乎是随机出现和消失的。这似乎在多表单应用程序中更为常见。

这一次,当我在主窗体上添加了一个新的按钮时,这个错误就消失了。按钮就在那里,没有事件处理程序,也不做任何事情。我认为,在重新链接应用程序时,对代码、类、变量等的任何随机更改都会重新排列内存布局,并且会触发或取消触发错误。

现在,我只是将新按钮留在表单上,将其设置为“不可见”,这样就没有可见的更改。由于它似乎工作,这是足够好的解决方案,我在这个时候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9352569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档