一种动态链接库的远程联调方法

文档序号:6426397阅读:723来源:国知局
专利名称:一种动态链接库的远程联调方法
技术领域
本发明涉及动态链接库的调试问题,特别是动态库的一种远程联调方法。
背景技术
动态链接库(DynamicLink Library 或者 Dynamic-link library,英文缩写为 DLL),是微软公司在Microsoft Windows操作系统中实现共享函数库概念的一种实作方式,它不是可执行文件但包含有可执行代码(共享函数库),扩展名是.dll、. ocx或者.drv 等。动态库具有扩展应用程序功能、隐藏实现细节、实现资源共享、节省内存资源等优点,被 Windows应用程序广泛使用。调用动态库的Windows应用程序称为“宿主程序”,宿主程序调用动态库中的函数实现动态库中的功能,宿主程序和动态库可以由不同的公司来开发, 然后组合在一起形成一套软件系统来完成特定功能。为了保证宿主程序和动态库相互配合的正确性和稳定性,就需要对两者进行联调,这种联调可以是本地也可以是远程的。若是本地的联调就比较简单,现在的软件开发工具基本都提供了本地联调的功能,只需要在动态库的调试中指定宿主程序在本地的路径及文件名即可按一般的Windows应用程序调试的方法进行调试。有些软件开发工具也提供了远程联调的功能,但需要被调试的计算机(称为 “目标计算机”)具有远程IP地址(互联网IP地址),还要复制一系列文件到目标计算机上, 比较麻烦。若将这种远程联调的需求转化为本地联调可以通过以下两种方式
1、宿主程序和动态库的开发人员聚在一起进行联调,共同查找问题;
2、宿主程序开发商远程为动态库开发商搭建宿主程序运行环境到动态库开发商的计算机上,然后由动态库开发人员进行本地调试;
第一种方式要付出比较大的时间成本和为双方开发人员聚在一起而产生的费用成本, 第二种方式在宿主程序被要求保密等情况下无法实施。但很多情况下,目标计算机在局域网中,没有远程IP地址,但可以收发邮件。目前还没有针对这种情况实施实时或准实时的动态库远程联调的方法。

发明内容
本发明可针对宿主程序和动态库属于不同的开发商所开发,宿主程序在远程的局域网中且没有远程IP地址,但可以收发外部邮件的情况下的一种准实时的动态库远程联调方法,可以达到减少开发成本,提高联调效率的目的。本发明的技术方案为
一种动态链接库的远程联调方法,其包括以下步骤
51、在动态库被宿主程序加载后定义一个全局的TStringList类用于存放联调信息;
52、在动态库的每个函数被调用时提取被调用函数的名称、调用时间、传入的参数列表等,并将所述信息写入联调信息中;
53、在每个动态库函数的执行过程中提取要观察的指针或变量值并写入到联调信息
中;S4、动态库中的异常处理机制判断函数是否异常终止; S5A、如为是,在动态库函数异常终止时将异常信息写入联调信息中; S5B、如为否,在每个动态库函数执行完毕时提取函数的返回值写入联调信息中,有输出值的函数将输出值也写入联调信息中;
56、将联调信息保存到宿主程序所在计算机的磁盘文件中;
57、将步骤S6所得的的联调信息文件作为附件,自动发送联调信息邮件给动态库开发
者;
58、判断联调信息邮件是否发送成功; S9A、如为是,进入步骤SlO ;
S9B、如为否,则提示需要将联调信息文件作为附件,手动发送联调信息邮件给动态库开发者,进入步骤S10;
510、调用完毕,宿主程序卸载动态库;
511、动态库开发者根据收到的联调信息邮件判断并解决动态库中的错误和问题。作为本发明优选的技术方案,S2中所述调用时间精确到毫秒。相对于现有技术,本发明有以下优点或技术效果
1、可实现宿主程序和动态库属于不同开发商所开发的情况,双方均无需知道对方的实现细节;
2、不需要宿主程序具有外部IP地址,可以在局域网中,若可以发送外部邮件则动态库可以自动发送联调信息邮件给动态库开发者;若不可以发送外部邮件则需手动发送联调信息邮件给动态库开发者;
3、这种联调方法打破了宿主程序和动态库开发者所在地域的限制,节省了开发时间, 降低了开发费用;
4、这种联调方法不需要统一宿主程序和动态库开发者联调的时间,从动态库被调用开始即可生成联调信息并最终以邮件形式发送给动态库的开发者。5、动态库开发者可根据需要随时调整需要监测的变量或参数值并产生在联调信息中,以便准确定位问题所在。


下面结合附图与具体实施例对本发明作进一步说明 图1是本发明的工作流程示意图。
具体实施例方式如图1所示,动态链接库的远程联调方法包括以下步骤
51、在动态库被宿主程序加载后定义一个全局的TMringList类用于存放联调信息;
52、在动态库的每个函数被调用时提取被调用函数的名称、调用时间(精确到毫秒),传入的参数列表等,并将所述信息写入联调信息中;
53、在每个动态库函数的执行过程中提取要观察的指针或变量值并写入到联调信息
中;
54、动态库中的异常处理机制判断函数是否异常终止;S5A、如为是,在动态库函数异常终止时将异常信息写入联调信息中; S5B、如为否,在每个动态库函数执行完毕时提取函数的返回值写入联调信息中,有输出值的函数将输出值也写入联调信息中;
56、将联调信息保存到宿主程序所在计算机的磁盘文件中;
57、将步骤S6中的联调信息文件作为附件,自动发送联调信息邮件给动态库开发者;
58、判断联调信息邮件是否发送成功; S9A、如为是,进入步骤SlO ;
S9B、如为否,则提示需要将联调信息文件作为附件,手动发送联调信息邮件给动态库开发者,进入步骤S10;
510、调用完毕,宿主程序卸载动态库;
511、动态库开发者根据收到的联调信息邮件判断并解决动态库中的错误和问题。
本发明在动态库的开发中加入如下的功能
1、开辟一块内存区域用于存放联调信息;
2、在每个动态库函数被调用时提取初始信息写入联调信息中;
3、在每个动态库函数执行过程中提取中间变量并写入到联调信息中;
4、在每个动态库函数执行完毕时提取函数信息写入联调信息中;
5、将联调信息写入宿主程序所在的本地磁盘文件中;
6、将联调信息以邮件的形式反馈给动态库开发者;
7、动态库开发者根据反馈的联调信息邮件判断并排除动态库中的错误和问题。
权利要求
1.一种动态链接库的远程联调方法,其特征在于,包括以下步骤51、在动态库被宿主程序加载后定义一个全局的TMringList类用于存放联调信息;52、在动态库的每个函数被调用时提取被调用函数的名称、调用时间、传入的参数列表,并将所述信息写入联调信息中;53、在每个动态库函数的执行过程中提取要观察的指针或变量值并写入到联调信息中;54、动态库中的异常处理机制判断函数是否异常终止;S5A、如为是,在动态库函数异常终止时将异常信息写入联调信息中; S5B、如为否,在每个动态库函数执行完毕时提取函数的返回值写入联调信息中,有输出值的函数将输出值也写入联调信息中;56、将联调信息保存到宿主程序所在计算机的磁盘文件中;57、将步骤S6所得的联调信息文件作为附件,自动发送联调信息邮件给动态库开发者;58、判断联调信息邮件是否发送成功; S9A、如为是,进入步骤SlO ;S9B、如为否,则提示需要将联调信息文件作为附件,手动发送联调信息邮件给动态库开发者,进入步骤S10;510、调用完毕,宿主程序卸载动态库;511、动态库开发者根据收到的联调信息邮件判断并解决动态库中的错误和问题。
2.根据权利要求1所述的一种动态链接库的远程联调方法,其特征在于,S2中所述调用时间精确到毫秒。
全文摘要
本发明提供一种动态链接库的远程联调方法,本发明可针对宿主程序和动态库属于不同的开发商所开发,宿主程序在远程的局域网中且没有远程IP地址,但可以收发外部邮件的情况下的一种准实时的动态库远程联调方法,可以达到减少开发成本,提高联调效率的目的。本发明不需要宿主程序具有外部IP地址,可以在局域网中使用;打破了宿主程序和动态库开发者所在地域的限制,节省了开发时间,降低了开发费用;不需要统一宿主程序和动态库开发者联调的时间,从动态库被调用开始即可生成联调信息并最终以邮件形式发送给动态库的开发者;动态库开发者可根据需要随时调整需要监测的变量或参数值并产生在联调信息中,以便准确定位问题所在。
文档编号G06F17/30GK102184264SQ20111016174
公开日2011年9月14日 申请日期2011年6月16日 优先权日2011年6月16日
发明者张六一 申请人:东信和平智能卡股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1