diff options
author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2018-12-14 22:01:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-14 22:01:16 +0100 |
commit | 9a924fb9d557434c5a2e4020c80db6e6bfe466ad (patch) | |
tree | d163f80c072edb24dffb1bf81adc5267026723e5 /src/common/Debugging/Errors.cpp | |
parent | 3acba6dded14afdf84f2ab51ca3b6cec92bdb092 (diff) |
Core/Misc: Log more information in asserts (#22783)
* Core/Misc: Log more information in asserts
Add a new function GetDebugInfos() to types that could trigger an ASSERT() to easily include more useful information in crashlogs.
This is an initial commit that requires many more commits to implement the new GetDebugInfos() function in all required types.
If the type doesn't have the function, the global default one is picked which doesn't log anything.
* Core/Misc: Fix dynamic build
Add missing attribute for dynamic build
* Core/Misc: Fix gcc/clang build
* Core/Misc: Rename GetDebugInfos() to GetDebugInfo()
* Core/Misc: Fix FormatAssertionMessage() adding an extra '\0'
* Core/Misc: Add GetDebugInfo support to Unit
* Core/Misc: Add GetDebugInfo support to Creature
* Core/Misc: Add more info to GetDebugInfo for Creature
* Core/Misc: Add GetDebugInfo support to GameObject
* Core/Misc: Add GetDebugInfo support to Player
* Core/Misc: Add more GetDebugInfo info
* Core/Misc: Add GetDebugInfo support to Item
* Core/Misc: Add GetDebugInfo support to Bag
* Core/Misc: Add GetDebugInfo support to Transport
* Core/Misc: Add GetDebugInfo support to TempSummon, Minion, Guardian, Pet
* Core/Misc: Add GetDebugInfo support to Map, InstanceMap
* Core/Misc: Add GetDebugInfo support to Spell
* Core/Misc: Fix build warning
* Core/Misc: Add GetDebugInfo support to Aura
* Core/Misc: Add GetDebugInfo support to UnitAI
Diffstat (limited to 'src/common/Debugging/Errors.cpp')
-rw-r--r-- | src/common/Debugging/Errors.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/common/Debugging/Errors.cpp b/src/common/Debugging/Errors.cpp index fd46575c237..fc4ecb5f2c8 100644 --- a/src/common/Debugging/Errors.cpp +++ b/src/common/Debugging/Errors.cpp @@ -59,8 +59,8 @@ namespace int32 length = vsnprintf(nullptr, 0, format, len); va_end(len); - formatted.resize(length + 1); - vsnprintf(&formatted[0], length + 1, format, args); + formatted.resize(length); + vsnprintf(&formatted[0], length, format, args); return formatted; } @@ -69,20 +69,20 @@ namespace namespace Trinity { -void Assert(char const* file, int line, char const* function, char const* message) +void Assert(char const* file, int line, char const* function, std::string debugInfo, char const* message) { - std::string formattedMessage = StringFormat("\n%s:%i in %s ASSERTION FAILED:\n %s\n", file, line, function, message); + std::string formattedMessage = StringFormat("\n%s:%i in %s ASSERTION FAILED:\n %s\n", file, line, function, message) + debugInfo + '\n'; fprintf(stderr, "%s", formattedMessage.c_str()); fflush(stderr); Crash(formattedMessage.c_str()); } -void Assert(char const* file, int line, char const* function, char const* message, char const* format, ...) +void Assert(char const* file, int line, char const* function, std::string debugInfo, char const* message, char const* format, ...) { va_list args; va_start(args, format); - std::string formattedMessage = StringFormat("\n%s:%i in %s ASSERTION FAILED:\n %s\n", file, line, function, message) + FormatAssertionMessage(format, args) + '\n'; + std::string formattedMessage = StringFormat("\n%s:%i in %s ASSERTION FAILED:\n %s\n", file, line, function, message) + FormatAssertionMessage(format, args) + '\n' + debugInfo + '\n'; va_end(args); fprintf(stderr, "%s", formattedMessage.c_str()); @@ -138,3 +138,8 @@ void AbortHandler(int sigval) } } // namespace Trinity + +std::string GetDebugInfo() +{ + return ""; +} |