mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
create MiniDump on crash in Debug builds
This commit is contained in:
parent
59a57ed7a5
commit
76dd7ae674
@ -167,7 +167,7 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<AdditionalDependencies>winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>dbghelp.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<ModuleDefinitionFile>ddraw.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>ddraw.def</ModuleDefinitionFile>
|
||||||
</Link>
|
</Link>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
@ -214,7 +214,7 @@ if exist "$(LocalDebuggerCommand)" if exist "$(LocalDebuggerWorkingDirectory)"
|
|||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<AdditionalDependencies>winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>dbghelp.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
<ModuleDefinitionFile>ddraw.def</ModuleDefinitionFile>
|
<ModuleDefinitionFile>ddraw.def</ModuleDefinitionFile>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
|
int dbg_exception_handler(EXCEPTION_POINTERS* exception);
|
||||||
void dbg_counter_start();
|
void dbg_counter_start();
|
||||||
double dbg_counter_stop();
|
double dbg_counter_stop();
|
||||||
void dbg_debug_string(const char *format, ...);
|
void dbg_debug_string(const char *format, ...);
|
||||||
|
32
src/debug.c
32
src/debug.c
@ -1,4 +1,5 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <dbghelp.h>>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "dd.h"
|
#include "dd.h"
|
||||||
#include "ddraw.h"
|
#include "ddraw.h"
|
||||||
@ -12,6 +13,37 @@ DWORD g_dbg_frame_count = 0;
|
|||||||
static LONGLONG g_dbg_counter_start_time = 0;
|
static LONGLONG g_dbg_counter_start_time = 0;
|
||||||
static double g_dbg_counter_freq = 0.0;
|
static double g_dbg_counter_freq = 0.0;
|
||||||
|
|
||||||
|
#if _DEBUG
|
||||||
|
int dbg_exception_handler(EXCEPTION_POINTERS* exception)
|
||||||
|
{
|
||||||
|
HANDLE dmp =
|
||||||
|
CreateFile(
|
||||||
|
"cnc-ddraw.dmp",
|
||||||
|
GENERIC_READ | GENERIC_WRITE,
|
||||||
|
FILE_SHARE_WRITE | FILE_SHARE_READ,
|
||||||
|
0,
|
||||||
|
CREATE_ALWAYS,
|
||||||
|
0,
|
||||||
|
0);
|
||||||
|
|
||||||
|
MINIDUMP_EXCEPTION_INFORMATION info;
|
||||||
|
info.ThreadId = GetCurrentThreadId();
|
||||||
|
info.ExceptionPointers = exception;
|
||||||
|
info.ClientPointers = TRUE;
|
||||||
|
|
||||||
|
MiniDumpWriteDump(
|
||||||
|
GetCurrentProcess(),
|
||||||
|
GetCurrentProcessId(),
|
||||||
|
dmp,
|
||||||
|
0,
|
||||||
|
&info,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
return EXCEPTION_EXECUTE_HANDLER;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void dbg_init()
|
void dbg_init()
|
||||||
{
|
{
|
||||||
static int stdout_open = 0;
|
static int stdout_open = 0;
|
||||||
|
@ -32,6 +32,7 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
|
|||||||
#if _DEBUG
|
#if _DEBUG
|
||||||
dbg_init();
|
dbg_init();
|
||||||
dprintf("cnc-ddraw = %p\n", hDll);
|
dprintf("cnc-ddraw = %p\n", hDll);
|
||||||
|
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)dbg_exception_handler);
|
||||||
#endif
|
#endif
|
||||||
g_ddraw_module = hDll;
|
g_ddraw_module = hDll;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user