Add a CMake option for generating mini dumps

Armin Burgmeier 2011-01-02 01:20:52 +01:00
parent 34c41dc837
commit 651153d814
3 changed files with 22 additions and 7 deletions

View File

@ -34,9 +34,12 @@ if(WIN32)
else()
endif()
option(GENERATE_MINI_DUMP "Generate a minidump on crash" ON)
else()
SET(USE_DIRECTX OFF)
SET(HAVE_FMOD OFF)
SET(GENERATE_MINI_DUMP OFF)
endif()
if(UNIX AND NOT USE_SDL_MAINLOOP)
option(USE_X11 "Use X11 to create windows etc." ON)
@ -881,6 +884,15 @@ elseif(MINGW)
target_link_libraries(clonk iberty)
endif()
CHECK_INCLUDE_FILE_CXX(getopt.h HAVE_GETOPT_H)
if(GENERATE_MINI_DUMP)
FIND_PATH(DBGHELP_INCLUDE_DIR NAMES dbghelp.h)
FINDLIB(DBGHELP_LIBRARIES NAMES dbghelp)
target_link_libraries(clonk ${DBGHELP_LIBRARIES})
include_directories(${DBGHELP_INCLUDE_DIR})
endif()
if(USE_GL)
include(FindOpenGL)
FINDLIB(GLEW_LIBRARIES NAMES GLEW glew32 glew32s)

View File

@ -194,3 +194,6 @@
/* Define to 1 if you have support for nullptr. */
#cmakedefine HAVE_NULLPTR 1
/* Generate minidumps on crash */
#cmakedefine GENERATE_MINI_DUMP 1

View File

@ -36,10 +36,6 @@
#ifdef _WIN32
#include <shellapi.h>
#if defined(_MSC_VER) && !defined(_DEBUG)
//#define GENERATE_MINI_DUMP
#endif
#ifdef GENERATE_MINI_DUMP
// Dump generation on crash
@ -49,7 +45,7 @@
static bool FirstCrash = true;
int GenerateDump(EXCEPTION_POINTERS* pExceptionPointers)
WINAPI LONG GenerateDump(EXCEPTION_POINTERS* pExceptionPointers)
{
if (!FirstCrash) return EXCEPTION_EXECUTE_HANDLER;
FirstCrash = false;
@ -85,7 +81,11 @@ int WINAPI WinMain (HINSTANCE hInst,
_CrtSetDbgFlag( _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG ) | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif
#ifdef GENERATE_MINI_DUMP
#if defined(GENERATE_MINI_DUMP) && !defined(_MSC_VER)
SetUnhandledExceptionFilter(GenerateDump);
#endif
#if defined(GENERATE_MINI_DUMP) && defined(_MSC_VER)
__try
{
#endif
@ -128,7 +128,7 @@ int WINAPI WinMain (HINSTANCE hInst,
// Return exit code
if (!Game.GameOver) return C4XRV_Aborted;
return C4XRV_Completed;
#ifdef GENERATE_MINI_DUMP
#if defined(GENERATE_MINI_DUMP) && defined(_MSC_VER)
} __except(GenerateDump(GetExceptionInformation())) { return C4XRV_Failure; }
#endif
}