forked from Mirrors/openclonk
Add a CMake option for generating mini dumps
parent
db2d9d7257
commit
ffe24d471a
|
@ -31,9 +31,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 AND NOT APPLE)
|
||||
option(USE_X11 "Use X11 to create windows etc." ON)
|
||||
|
@ -951,6 +954,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)
|
||||
|
|
|
@ -198,4 +198,7 @@
|
|||
#cmakedefine HAVE_NULLPTR 1
|
||||
|
||||
/* Use Apple Cocoa for the UI */
|
||||
#cmakedefine USE_COCOA 1
|
||||
#cmakedefine USE_COCOA 1
|
||||
|
||||
/* Generate minidumps on crash */
|
||||
#cmakedefine GENERATE_MINI_DUMP 1
|
||||
|
|
|
@ -35,10 +35,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
|
||||
|
@ -48,7 +44,7 @@
|
|||
|
||||
static bool FirstCrash = true;
|
||||
|
||||
int GenerateDump(EXCEPTION_POINTERS* pExceptionPointers)
|
||||
WINAPI LONG GenerateDump(EXCEPTION_POINTERS* pExceptionPointers)
|
||||
{
|
||||
if (!FirstCrash) return EXCEPTION_EXECUTE_HANDLER;
|
||||
FirstCrash = false;
|
||||
|
@ -84,7 +80,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
|
||||
|
@ -127,7 +127,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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue