• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

从 COM 客户端获得连续的 .NET 异常日志记录并且无需修改代码

发布: 2008-5-14 09:43 | 作者: 不详 | 来源: ccid | 查看: 180次 | 进入软件测试论坛讨论

领测软件测试网



全局接口表 (GIT) 存储接口指针,以便可以跨单元安全地访问它们。在一个单元中添加的对象可以从 GIT 中移除,并且可以在另一个单元中访问。当接口被添加到 GIT 中的时候,将在 DWORD 中返回一个 Cookie。该 DWORD 需要存储在队列中,以便辅助线程可以简单地将该 DWORD 弹出队列,并且使用 GIT 提取与该 Cookie 相对应的 .NET 异常对象。

该异常的引发日期和时间也需要记录在队列中的元素内部。考虑以下情况:错误被引发,自定义的 SetErrorInfo 函数被调用,异常被添加到队列中,并且辅助线程被通知发布该异常。如果该辅助线程在一段时间内没有得到调度,则即使只过了几秒钟,其他异常也可能在第一个异常被实际发布之前被添加到队列中。因而,事件日志中实际记录的时间将与引发该错误的实际时间稍微不同步。因此,所记录的时间是至关重要的。所记录的时间和 .NET 异常 Cookie 将包装在结构内部,该结构将被添加到队列中。

因为 STL 队列类不是线程安全的,并且需要完成少量工作以便向队列中添加异常,所以创建了 ManagedExceptionQueue 类。这将使用类临界区来保护对队列进行的同时访问,将 GIT 的使用包装到该类上的 push 和 pop 函数中,并且为辅助线程和自定义挂钩函数提供了一个良好的接口,以便在队列中设置和检索异常信息。该过程显示在图 5 中。



图 5 两个通过 CCW 引发异常的客户端



在自定义 SetErrorInfo 函数将异常添加到队列中以后,就会在辅助线程内部产生一个事件,以通知它可以发布异常。队列类的代码存在于 MSDN Magazine Web 站点上的下载中的 ManagedExceptionQueue.cpp 中。

返回页首
异常日志记录线程

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网