16,472
社区成员
发帖
与我相关
我的任务
分享
typedef BOOL (WINAPI *MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, HANDLE hFile, MINIDUMP_TYPE DumpType,
const PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
const PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
const PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
static MINIDUMPWRITEDUMP writeMiniDump = NULL;
MINIDUMPWRITEDUMP GetWriteMiniDumpProcedureAddress()
{
if (HMODULE dll = LoadLibrary(TEXT("DBGHELP.DLL")))
{
return (MINIDUMPWRITEDUMP)GetProcAddress(dll, "MiniDumpWriteDump");
}
return NULL;
}
LONG WINAPI ExceptionFilter(struct _EXCEPTION_POINTERS* exception)
{
//程序崩溃
OutputDebugString(TEXT("ExceptionFilter: 检测到程序崩溃"));
return EXCEPTION_EXECUTE_HANDLER;
}
void EnableDump()
{
::SetErrorMode(SEM_FAILCRITICALERRORS);
if (writeMiniDump = GetWriteMiniDumpProcedureAddress())
{
SetUnhandledExceptionFilter(ExceptionFilter);
}
}
int main()
{
EnableDump();
vector<int> aa;
aa.push_back(1);
int b = aa[1];
return 0;
}
VC的vector代码
reference operator[](size_type _Pos)
{ // subscript mutable sequence
#if _HAS_ITERATOR_DEBUGGING
if (size() <= _Pos)
{
_DEBUG_ERROR("vector subscript out of range");
_DEBUG_ERROR
==>
::_CrtDbgBreak();