#include <time.h> #include <Windows.h> #include <Dbghelp.h> #pragma comment(lib, "Dbghelp.lib") long __stdcall crush_callback(_EXCEPTION_POINTERS* ep) { time_t t; struct tm *p; char fname[256] = {0}; t = time(NULL) + 8 * 3600; //东八区 p = gmtime(&t); sprintf(fname, "dump_%d-%d-%d_%d_%d_%d.DMP", 1900+p->tm_year, 1+p->tm_mon, p->tm_mday, (p->tm_hour)%24, p->tm_min, p->tm_sec); //TCHAR *pStr = A2T(fname); HANDLE hFile = CreateFileA(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { return EXCEPTION_CONTINUE_SEARCH; } MINIDUMP_EXCEPTION_INFORMATION exceptioninfo; exceptioninfo.ExceptionPointers = ep; exceptioninfo.ThreadId = GetCurrentThreadId(); exceptioninfo.ClientPointers = FALSE; if (!MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpWithFullMemory, //这里会将程序运行时的内存写入磁盘,文件较大,如果不需要这些及时的内存信息,用:MiniDumpNormal &exceptioninfo, NULL, NULL)) { return EXCEPTION_CONTINUE_SEARCH; } CloseHandle(hFile); return EXCEPTION_EXECUTE_HANDLER; } int main(int argc, char* argv[]) { SetUnhandledExceptionFilter(crush_callback); _asm int 3 //只是为了让程序崩溃 return 0; }
相关推荐
在客户机器上如何得到应该程序的详细出错信息, 这里使用drwtsn32,在应用程序崩溃的时候自动将调用栈的信息以文件形式保存在磁盘。... 生成dump有drwtsn32, NTSD,CDB等多种工具,drwtsn32 于系统自带。
本文将详细讲解如何利用VC++ 6.0和dbghelp.dll库来生成DMP文件。 首先,dbghelp.dll是Windows操作系统中用于调试帮助的动态链接库,它提供了诸如堆栈回溯、模块信息获取、符号加载等功能。在VC++ 6.0中,通过调用这...
2. **Win32 API**:在Windows平台上,可以使用Win32 API函数,如MiniDumpWriteDump,来生成dump文件。这个函数允许开发者在程序崩溃时记录特定的信息到dump文件。 3. **BRExceptionFilter.cpp和BRExceptionFilter.h...
首先,让我们了解如何在VC++项目中集成CrashRpt库来生成dump文件。CrashRpt是一个开源的C++库,它提供了一种简单的方式来捕获和报告应用程序崩溃。要使用CrashRpt,你需要下载并将其包含到你的项目中。例如,提供的...
标题中的"自动写DUMP"指的是在程序发生异常时,系统能够自动生成一个DMP(Dump)文件,该文件包含了程序崩溃时刻的内存快照,包括堆栈信息、线程状态、内存分配等关键数据。 DMP文件是一种二进制文件,通常由操作...
本文将深入探讨如何利用CMiniDumper类生成Dump文件,并通过Visual Studio进行分析,从而准确地找到程序出错的地方。 首先,Dump文件是一种用于记录程序运行时状态的数据文件,它包含了进程内存、调用堆栈、线程信息...
本文将深入探讨如何在VS2010环境下利用DMP(Dump)文件和PDB(Program Database)文件来分析程序中的异常行号。 首先,我们需要理解DMP文件和PDB文件的作用。DMP文件,也称为内存转储文件,是操作系统在程序崩溃时...
在"testdump"文件中,可能包含了一个实际的dump文件或者是一份关于如何生成和分析dump文件的指南。如果是dump文件,我们可以使用WinDbg进行打开,并执行一系列命令,如`.loadby sos mscorwks`加载调试支持库,然后...
一个VC++ 2010开发的小工具,可以生成process dump 文件,执行WMI查询,调用WMI 方法(StdRegProv.GetDWORDValue和 Win32_OperatingSystem.Reboot 和Win32Shutdown方法)。
此外,自5.3.04版本的驱动开始,三汇语音卡的驱动程序提供了CreateDumpWhenCrash配置选项,当驱动崩溃时,Windows系统下也会生成dump文件,这为诊断驱动层面的问题提供了便利。 总的来说,处理应用程序崩溃问题需要...
这个文件不跨机器共享,每台机器打开 Workspace 时会根据当前环境生成相应的 .opt 文件。 - **MFC 编程特点**: - MFC(Microsoft Foundation Classes)是 Microsoft 提供的一组 C++ 类库,用于简化 Windows 应用...
由于该文件包含了特定计算机的信息,因此不具备可移植性,当在不同的计算机上打开同一个工作空间文件时,会自动生成一个新的.opt文件以匹配当前计算机的配置。 - **ClassWizard文件(.clw)**:这是一种特殊的文件...
在Visual C++中开发应用程序时,系统会自动生成多种类型的文件来组织项目。 - **dsw(Workspace文件)**:这是Visual C++中最高级别的文件类型,用于管理多个项目(Project)。通过这个文件可以协调和管理多个项目...
本主题将深入探讨如何在C++、MFC以及使用VC++编译器时,有效地解析和生成JSON数据。 首先,让我们了解JSON的基本结构。JSON是一种基于文本的格式,主要由键值对(key-value pairs)组成,数据类型包括字符串、数字...
### VC++实例知识点详解 #### 一、Visual C++简介 **1.1 Visual C++ 和 MFC 的历史** - **Visual C++ 的起源与发展**: - Visual C++ 是微软公司开发的一款集成开发环境(IDE),专为 Windows 平台上的 C/C++ ...
静态库将所有依赖项都包含在内,使得生成的可执行文件独立,不需额外的库文件;而动态库则会在运行时从系统中加载,使得程序更小,但需要系统中安装相应的库文件。 在源代码层面,通过分析tmpdump2.3和librtmp的源...
这类文件不具备跨机器共享的能力,当打开 *Workspace* 文件时,如果没有找到相应的 `.opt` 文件,系统会自动生成一个。 - **其他重要文件**: - **`.clw` 文件**:用于存储项目中类和资源的信息,是 ClassWizard ...
- 数据导入:支持多种分子动力学输出格式,如LAMMPS的dump文件,MDynaMix,VASP,Gromacs等。 - 数据转换:能够对粒子属性进行转换和计算,例如速度、温度、压力等。 - 数据筛选:用户可以基于特定条件筛选粒子,如...
Windows Crash Dump API是Windows操作系统提供的一组接口,用于生成和分析崩溃转储文件。这些文件包含了系统在特定时间点的内存快照,可以用来诊断系统崩溃、性能问题以及像死锁这样的并发问题。WCT API允许开发者...
你需要下载库源码,配置项目设置,将库文件加入到项目中,并链接相应的库。 - VS2010:支持现代C++特性,可以选择更现代的JSON库,如RapidJSON或nlohmann/json。这些库通常有更丰富的功能和更好的性能。添加库的...