加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows – Delphi App与程序通信偶尔崩溃 – 供应商责备我的Del

发布时间:2020-12-14 02:13:49 所属栏目:Windows 来源:网络整理
导读:我写了一个Delphi DLL,它通过COM与第三方程序通信.一些用户报告第三方程序偶尔崩溃.其他以相同方式使用该软件的人从未经历过崩溃.发生此崩溃时,第三方程序似乎在我的DLL应用程序中变得不可用. 供应商发誓这是Delphi DLL如何编码的问题,虽然他们没有看到源代
我写了一个Delphi DLL,它通过COM与第三方程序通信.一些用户报告第三方程序偶尔崩溃.其他以相同方式使用该软件的人从未经历过崩溃.发生此崩溃时,第三方程序似乎在我的DLL应用程序中变得不可用.

供应商发誓这是Delphi DLL如何编码的问题,虽然他们没有看到源代码,也无法分辨DLL正在做什么导致崩溃,但他们知道这是“某事”.

除了我认为第三方程序不应该由于我的DLL中的一些小问题而崩溃这一事实,让我们假设我的DLL中有一些东西需要修复.

如何确定我的应用程序可能导致此问题?有没有人有通过COM与这样的超敏感程序进行通信的经验?是否有一些常见的事情可能会导致第三方程序崩溃?

解决方法

>让客户满意.
>不要以为它不是你的dll,它可能是.即使“其他人以相同的方式使用软件从未经历过崩溃”,也可能是因为使用不同的数据,它会做出不同的事情……
>我建议您在“特殊”诊断版本中设置日志文件.
>记录所有内容,参数,异常以及您要经历的步骤.甚至可能是每个功能的开始和结束,以及其他每一行.

这是它看起来的样子……

Loaded DLL
Started MyFunction1 with parameters: 1,4,hello
   1
   2
   ...
   500
Ended MyFunction1

为了那个,我设置了一些功能(在他们自己的单元中):

// opens a text file (fixed name),and appends to it.
function InitializeLog; 

// closes the file
function CloseLog;      

//add a log line.
function Log(message:string='',startNewFunction:boolean:False);

你会这样称呼它:

function MyFunction1(Integer,Integer,String);
begin
  try
    Log('Loaded DLL');

    //use inttostr and do some string concats to get the params
    Log('Started MyFunction1 with parameters: 1,hello',true); 

    //Then every other line:
    Log; 
    //this would increment a global variable FuncLine:Integer
    //and write it to the file.    

  except
    On E:Exception (Log('***'+E.Message));
  end;
end;

这样的东西应该有{$DEFINE}来启用这些日志记录功能,以启用/禁用诊断日志记录.

This could also be useful.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读