가끔 미니 덤프에 STL 관련 크래쉬가 남지 않을때가 있다.
관련하게 STL 강제 크래쉬 만드는 방법.
#ifndef _CUSTOM_INVALID_PARAMETER_H
#define _CUSTOM_INVALID_PARAMETER_H
#include <stdlib.h>
#include <crtdbg.h>
int _custom_report_hook( int reportType, char* message, int* returnValue )
{
UNREFERENCED_PARAMETER( message );
UNREFERENCED_PARAMETER( returnValue );
//if( NULL != message )
//printf( "In_ReportHook = %s \n", message );
if( _CRT_WARN != reportType )
{
// 크래쉬 유발
*(int*)0 = 0;
return false;
}
return true;
}
// expression : C 런타임 함수에서 발생한 예외 설명 문자열
// func : 함수 명
// file : 소스 파일 명
// line : 에러 발생 위치
// pReserved : 예약어
void _custom_invalid_parameter_handler( const wchar_t* expression,
const wchar_t* func,
const wchar_t* file,
unsigned int line,
uintptr_t pReserved )
{
//UNREFERENCED_PARAMETER( expression );
//UNREFERENCED_PARAMETER( func );
//UNREFERENCED_PARAMETER( file );
//UNREFERENCED_PARAMETER( line );
//UNREFERENCED_PARAMETER( pReserved );
//printf( "Invalid Parameter Handler. \n" );
// 크래쉬 유발
//*(int*)0 = 0;
printf( "EXCEPTION CATCH [%s][%s][%s][%d] \n", expression, func, file, line );
}
void SetSTLCustomHandler()
{
_CrtSetReportHook( &_custom_report_hook );
_invalid_parameter_handler oldHandler, reportHandler;
oldHandler = _custom_invalid_parameter_handler;
reportHandler = _set_invalid_parameter_handler( reportHandler );
_CrtSetReportMode( _CRT_ASSERT, 0 );
}
#endif
//////////////////////////////////////////////////////
int main()
{
SetSTLCustomHandler();
/* 코드 */
return 0;
}
'[ Programing ] > STL & Booster' 카테고리의 다른 글
C++ STL shuffle. (0) | 2020.06.08 |
---|---|
STL find_if 사용법. (0) | 2019.12.10 |
mt19937 Random (0) | 2016.06.15 |
std::string <-> std::wstring (0) | 2013.11.14 |
stringstream.... INI 파일 읽어 구분 문자 별로 값 넣기. (0) | 2013.06.26 |