summaryrefslogtreecommitdiff
path: root/indra/newview/llwindebug.cpp
diff options
context:
space:
mode:
authorChristian Goetze (CG) <cg@lindenlab.com>2010-08-02 16:59:20 -0700
committerChristian Goetze (CG) <cg@lindenlab.com>2010-08-02 16:59:20 -0700
commit6a1fefac22b62c45542208928918e9616e85977c (patch)
treec85c576b93754ec67ac5e93884b2fd26af192325 /indra/newview/llwindebug.cpp
parentf423a69864c40f760c1c7e64a2e544fd1dba77fb (diff)
parent15247f086989a43881d79c1ee5416bb00721eb68 (diff)
Redo the same merge as in changeset "2026f824953f", but this time with feeeeling.
Diffstat (limited to 'indra/newview/llwindebug.cpp')
-rw-r--r--indra/newview/llwindebug.cpp61
1 files changed, 35 insertions, 26 deletions
diff --git a/indra/newview/llwindebug.cpp b/indra/newview/llwindebug.cpp
index 502fefd4ef..660245b02b 100644
--- a/indra/newview/llwindebug.cpp
+++ b/indra/newview/llwindebug.cpp
@@ -97,6 +97,9 @@ void LLWinDebug::init()
// Load the dbghelp dll now, instead of waiting for the crash.
// Less potential for stack mangling
+ // Don't install vectored exception handler if being debugged.
+ if(IsDebuggerPresent()) return;
+
if (s_first_run)
{
// First, try loading from the directory that the app resides in.
@@ -135,36 +138,42 @@ void LLWinDebug::init()
void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const std::string& filename)
{
- if(f_mdwp == NULL || gDirUtilp == NULL)
- {
- return;
- }
- else
+ // Temporary fix to switch out the code that writes the DMP file.
+ // Fix coming that doesn't write a mini dump file for regular C++ exceptions.
+ const bool enable_write_dump_file = false;
+ if ( enable_write_dump_file )
{
- std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, filename);
-
- HANDLE hFile = CreateFileA(dump_path.c_str(),
- GENERIC_WRITE,
- FILE_SHARE_WRITE,
- NULL,
- CREATE_ALWAYS,
- FILE_ATTRIBUTE_NORMAL,
- NULL);
-
- if (hFile != INVALID_HANDLE_VALUE)
+ if(f_mdwp == NULL || gDirUtilp == NULL)
{
- // Write the dump, ignoring the return value
- f_mdwp(GetCurrentProcess(),
- GetCurrentProcessId(),
- hFile,
- type,
- ExInfop,
- NULL,
- NULL);
-
- CloseHandle(hFile);
+ return;
}
+ else
+ {
+ std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, filename);
+
+ HANDLE hFile = CreateFileA(dump_path.c_str(),
+ GENERIC_WRITE,
+ FILE_SHARE_WRITE,
+ NULL,
+ CREATE_ALWAYS,
+ FILE_ATTRIBUTE_NORMAL,
+ NULL);
+
+ if (hFile != INVALID_HANDLE_VALUE)
+ {
+ // Write the dump, ignoring the return value
+ f_mdwp(GetCurrentProcess(),
+ GetCurrentProcessId(),
+ hFile,
+ type,
+ ExInfop,
+ NULL,
+ NULL);
+
+ CloseHandle(hFile);
+ }
+ }
}
}