#include <mm_CrtDbg.h>
...
HANDLE CrtFile = CreateFile( LogFile_Name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );

int DbgMode = _CRTDBG_LEAK_CHECK_DF   /* Leak check at program exit */
# if defined(_CRTDBG__NO_MICROSOFT)
        | _CRTDBG_MR_BOUNDSCHECK  /* new flag by MM */
#endif
        | _CRTDBG_CHECK_ALWAYS_DF /* Check heap every alloc/dealloc */ 
        | _CRTDBG_CHECK_CRT_DF    /* Do Leak check/diff CRT blocks */
        ;
_CrtSetDbgFlag(DbgMode);

Mode = _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE | _CRTDBG_MODE_WNDW );
Mode = _CrtSetReportMode( _CRT_WARN  , _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE );
Mode = _CrtSetReportMode( _CRT_ERROR , _CRTDBG_MODE_DEBUG | _CRTDBG_MODE_FILE );
_CrtSetReportFile( _CRT_ASSERT, CrtFile );
_CrtSetReportFile( _CRT_WARN  , CrtFile );
_CrtSetReportFile( _CRT_ERROR , CrtFile );

...

// now, make your errors