diff options
author | Jeff Hostetler <jeffhost@microsoft.com> | 2019-06-25 14:49:40 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-06-25 17:46:57 (GMT) |
commit | 556702f86cb043f18bf46dceec25fe1e783c4590 (patch) | |
tree | 79bfbdf11c7c3b20f31113abf4e6f4704b4865ea | |
parent | dce7d295514f0acebb897cc37a451963d60588f5 (diff) | |
download | git-556702f86cb043f18bf46dceec25fe1e783c4590.zip git-556702f86cb043f18bf46dceec25fe1e783c4590.tar.gz git-556702f86cb043f18bf46dceec25fe1e783c4590.tar.bz2 |
msvc: add a compile-time flag to allow detailed heap debugging
MS Visual C comes with a few neat features we can use to analyze the
heap consumption (i.e. leaks, max memory, etc).
With this patch, we introduce support via the build-time flag
`USE_MSVC_CRTDBG`.
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | compat/mingw.c | 6 | ||||
-rw-r--r-- | config.mak.uname | 4 | ||||
-rw-r--r-- | git-compat-util.h | 9 |
3 files changed, 19 insertions, 0 deletions
diff --git a/compat/mingw.c b/compat/mingw.c index c063ae6..6672858 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -2411,6 +2411,12 @@ int wmain(int argc, const wchar_t **wargv) trace2_initialize_clock(); +#ifdef _MSC_VER +#ifdef USE_MSVC_CRTDBG + _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); +#endif +#endif + maybe_redirect_std_handles(); /* determine size of argv and environ conversion buffer */ diff --git a/config.mak.uname b/config.mak.uname index b8c52e4..3fde48c 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -448,6 +448,10 @@ else endif BASIC_CFLAGS += $(sdk_libs) $(msvc_libs) +ifneq ($(USE_MSVC_CRTDBG),) + # Optionally enable memory leak reporting. + BASIC_CFLAGS += -DUSE_MSVC_CRTDBG +endif BASIC_CFLAGS += -DPROTECT_NTFS_DEFAULT=1 # Always give "-Zi" to the compiler and "-debug" to linker (even in # release mode) to force a PDB to be generated (like RelWithDebInfo). diff --git a/git-compat-util.h b/git-compat-util.h index cc0e7e9..83be89d 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -1,6 +1,15 @@ #ifndef GIT_COMPAT_UTIL_H #define GIT_COMPAT_UTIL_H +#ifdef USE_MSVC_CRTDBG +/* + * For these to work they must appear very early in each + * file -- before most of the standard header files. + */ +#include <stdlib.h> +#include <crtdbg.h> +#endif + #define _FILE_OFFSET_BITS 64 |