通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> C#语言 >> 数据库编程 >> 文章正文
介绍一个专门处理C++异常的类
责任编辑:ncic   更新日期:2007-4-2

本文示例源代码下载

  简介:

  CExceptionLogger,是一个可以免费使用的C++类,用它可以截获未处理异常,如:非法存取、栈溢出、被零除等,并可以将异常详细信息记录到日志文件。这个类源自于MSDN Magazine 2002年3月的一篇专栏文章“Under the Hood: Improved Error Reporting with DBGHELP 5.1”,该文章的作者是 Matt Pietrek。

  特性:

  在默认情况下,CExceptionLogger产生一个日志文件,名字为:nameofexe.exception,这里的nameofexe是exe文件的名字。如果以ASCII模式生成CExceptionLogger,则日志文件为一ASCII文件;如果以UNICODE模式生成CExceptionLogger,那么日志文件为一UNICODE文件。日志文件记录的信息包括:

  记录异常发生的日期和时间。

  异常代码。

  如果发生非法存取,则记录该异常的详细信息。

  记录的异常详细信息包括:线性地址、段、偏移量和模块路径。

  进程的全路径名。

  当前Win32工作目录。

  进程的命令行。

  进程ID。

  发生异常的线程ID。

  列举进程中所有的线程(假设ToolHelp32是可获得的),内容包括:

  线程ID

  优先级和Delta优先级

  参考

  创建时间

  Kernel 和 User Time

  列举进程中的模块(同样假设ToolHelp32是可获得的),内容包括:

  名字和全路径

  全程及每个进程的引用计数

  模块句柄

  大小

  模块完全展开后的所有符号

  所有x86寄存器。

  异常发生的调用堆栈,包括:段、偏移量、模块、函数和行信息。

  日志文件记录的内容还包括每一个堆栈帧(stack frame)以及所有模块、所有变量、所有参数;所有基本数据类型,如:voids, chars, shorts, words, ints, DWORDS, floats, doubles 和 longs。此外日志还记录用户定义的数据类型(UDT)包括结构、联合以及类的信息,再现其成员数据。每种类型都包括名字、地址、类型和值。如果变量是一数组,该数组中的值被完全记录。

版权声明:

  你可以在任何以二进制形式发布的产品(包括商业的、共享的、自由的或其它的)中包含此源代码

  在不修改每个模块(*.h、*.cpp)最上方版权细则的前提下,你可以用任何方式修改源代码

  如果你想要与自己的应用程序一起分发源代码,只允许分发作者最新发布的版本,以便保证源代码的出处是唯一的

使用方法:

  编译这个类需要安装2002年11月以后发布的平台SDK。使用时既可以将 ExceptHandler.cpp/h 文件直接添加到C++工程中,也可以用DLL输出异常处理函数类,并用LoadLibrary函数在需要时动态加载DLL。

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程