블로그는 나의 힘!
[ Programing ]/STL & Booster2017. 10. 10. 10:47

가끔 미니 덤프에 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
Posted by Mister_Q