程序启动时出现Windows错误

时间:2014-02-13 14:14:42

标签: windows delphi

我有一个用Delphi XE3(原始Delphi 7)编写的带有MySQL数据库的应用程序。它在网络上的5台计算机上运行。其中两台计算机在Windows 7上,而另外三台仍在Windows XP中。客户端最近将3台Windows XP计算机升级到Windows 7 x64(3台全新的相同机器)。程序在其中一台新计算机上正常运行但在另外2台上我收到错误消息“问题导致程序停止工作.Windows将关闭程序并通知您是否有可用的解决方案”。在验证密码并连接到数据库之后,程序似乎在FormActivate过程结束时崩溃。 MySQL服务器已启动并正在运行。我可以在本地和远程成功访问问题机器上的数据库。

我已经在互联网上搜索过,一些网站建议这个错误是由Windows线程到系统文件触发的保护机制,无限循环或内存问题 - 这些都不适用于我的程序。

我已经重新格式化了2台有问题的计算机并重新安装了Windows 7,但它没有解决问题。

问题和工作机器(以及我的开发机器上)的DependencyWalker输出是相同的:

  

错误:由于隐式相关模块中缺少导出功能,至少有一个模块具有未解析的导入。

     

错误:找到了具有不同CPU类型的模块。

关于不同的CPU类型 - 在所有情况下,应用程序是x86,其余模块是x64。这可能是一个32位-64位的问题,但该程序在除2台问题机器之外的所有机器上运行。

Windows事件查看器报告以下错误:

  

错误应用程序名称:February_2014.exe,版本:1.0.0.0,时间戳:0x52fa3b19

     

错误模块名称:KERNELBASE.dll,版本:6.1.7601.18229,时间戳:0x51fb1116

     

异常代码:0x0eedfade

     

故障偏移:0x0000c41f

     

错误进程ID:0x1510

     

错误申请开始时间:0x01cf28a57840f88d

     

错误申请路径:C:\ dgpa dgr \ February_2014.exe

     

错误模块路径:C:\ Windows \ syswow64 \ KERNELBASE.dll

     

报告ID:bd26ca27-9498-11e3-9479-7c050710b013

我在互联网(和Stackoverflow)上搜索了KERNELBASE.dll但找不到任何有用的内容。

我在Windows Technet上寻求帮助但没有成功 http://social.technet.microsoft.com/Forums/windows/en-US/ef52b2e1-237d-436f-952f-7cdecdb48337/a-problem-caused-the-program-to-stop-working-windows-will-close-the-program-and-notify-you-if-a?forum=w7itprogeneral

该程序在我的Windows 7 x64开发机器上运行没有故障,因此我无法复制我在客户端遇到的问题/错误。有没有人有类似的问题?有关错误原因/触发器的任何建议以及如何解决它?

更新

我从madExcept收到了以下报告,但我不知道这意味着什么

enter image description here

3 个答案:

答案 0 :(得分:1)

如果在应用程序中包含ClientDataSet,则需要在应用程序中部署midas.dll,或者必须手动将MidasLib单元添加到项目的uses子句中(例如)

program Project1;

uses
  MidasLib,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

有关详细说明,请参阅主题的article of Cary Jensen

答案 1 :(得分:0)

madExcept的屏幕截图告诉您,在致电Application.Run之前,您的程序在启动时会引发异常。异常的根源在项目文件中对Application.CreateForm的调用中。

顶级异常处理程序包含在Application.Run中实现的主应用程序消息循环中。因为您还没有启动主应用程序消息循环,所以没有异常处理程序。

这意味着异常泄露出您的应用程序,系统必须尽可能地处理它。

我不知道如何解决您的具体问题,但madExcept诊断会告诉您从哪里开始查找。理想情况下,您希望能够在IDE中调试此方案。一旦你能做到这一点,跟踪就会容易得多。

从根本上说,如果您从启动代码中泄漏异常,您将遇到此类错误对话框。

答案 2 :(得分:0)

我知道一些可能成为问题潜在根源的事情。首先是运行应用程序的路径名中的空格(空白)。尝试将应用程序移动到路径名中没有空格的子目录。如果您还没有,请先尝试在管理员模式下运行。引用" midas.dll"的答案是另一个。随着Delphi用于在Windows \ System32目录中安装midas.dll副本的附加警告。确保您的midas.dll版本附带了您编写代码的Delphi版本(并确保在您想要的版本之前找不到另一个旧版本.Depends.exe可以帮助显示路径加载的dll。你也尝试使用" XP兼容性运行应用程序"?问题是否消失?以前在Delphi中的DataModule表单上也存在数据库组件问题。如果你有一个数据库组件使用AutoConenct(或Streamed连接)时,它可能会导致异常错误。最好将其断开并在运行时将其连接到源代码中。最后要尝试的是,查看Windows服务并查看性能日志是否先前运行启动你的应用程序。一个奇怪的,但我已经看到了。